<commit_before><!doctype html>
<html lang="en">

	<head>
		<meta charset="utf-8">

		<title>reveal.js - The HTML Presentation Framework</title>

		<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
		<meta name="author" content="<NAME>">

		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

		<script src="http://ajax.googleapis.com/ajax/libs/webfont/1.4.10/webfont.js"></script>
	    <script>
	        WebFont.load({
	             custom: {
	                 families: [
	                     'Gotham SSm:n4,n7',
	                     'Gotham:n4,n7'
	                 ],
	                 urls: [
	                     'http://s.npr.org/templates/css/fonts/GothamSSm.css',
	                     'http://s.npr.org/templates/css/fonts/Gotham.css'
	                 ]
	             },
	             timeout: 10000
	         });
	    </script>

		<link rel="stylesheet" href="css/reveal.min.css">
		<link rel="stylesheet" href="css/theme/fivethirtyeight.css" id="theme">

		<!-- For syntax highlighting -->
		<link rel="stylesheet" href="lib/css/zenburn.css">

		<!-- If the query includes 'print-pdf', include the PDF print sheet -->
		<script>
			if( window.location.search.match( /print-pdf/gi ) ) {
				var link = document.createElement( 'link' );
				link.rel = 'stylesheet';
				link.type = 'text/css';
				link.href = 'css/print/pdf.css';
				document.getElementsByTagName( 'head' )[0].appendChild( link );
			}
		</script>

		<!--[if lt IE 9]>
		<script src="lib/js/html5shiv.js"></script>
		<![endif]-->
	</head>

	<body>

		<div class="reveal">

			<!-- Any section element inside of this container is displayed as a slide -->
			<div class="slides">
				<section>
					<h1 style='font-size: 64px;'>Bro, do you even scrape?</h1>
					<h3 style='font-size: 45px;'>FiveThirtyEight</h3>
					<p>
						<small>Created by <a href="http://github.com/AlJohri"><NAME></a> / <a href="http://twitter.com/aljohri">@aljohri</a></small>
					</p>
				</section>

				<section>
					<section>
						<h1>High Level</h1>
						<br/>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>

					<section>
						<h2>Two Main Types</h2>
						<ul>
							<li>Simulate Browser</li>
							<li>Simulate GET, POST requests</li>
						</ul>
					</section>

					<section>
						<h3>Simulate Browser</h3>
						<ul>
							<li>slower</li>
							<li>things can move and change</li>
							<li>intutive to write</li>
						</ul>
					</section>

					<section>
						<h3>Simulate GET, POST requests</h3>
						<ul>
							<li>often requires a bit more digging to simulate javascript</li>
							<li>longer lasting (APIs don't change much)</li>
							<li><i>much, much</i> faster</li>
						</ul>
					</section>
<!--
					<section>
						<h4>Simulate GET, POST requests <i>(contd.)</i></h4>
						<img height=550px src="http://i.stack.imgur.com/NBa1j.jpg"/>
						<p>Always use the network tab!</p>
					</section>
 -->
				</section>

				<!-- Python -->
				<section>
					<section>
						<h1>Python</h1>
						<br/>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>
					<section>
						<h2>Da Libz</h2>
						<ul>
							<li><a href="http://docs.python-requests.org/en/latest/">requests</a>, <a href="http://lxml.de/">lxml</a>, <a href="https://pythonhosted.org/cssselect/">cssselect</a>, <a href="http://www.crummy.com/software/BeautifulSoup/">beautifulsoup</a></li>
							<li><a href="http://scrapy.org/">scrapy</a></li>
							<hr/>
							<li><a href="http://docs.seleniumhq.org/">selenium</a></li>
							<li><a href="http://jeanphix.me/Ghost.py/">ghost.py</a></li>
						</ul>

						<br/>
						<br/>

						<p>
						<code style="font-size: 30px;">pip install requests lxml cssselect beautifulsoup4</code>
						</p>

					</section>

					<section>
						<h2>Example</h2>
						<pre>
						<code>
import requests, lxml.html
response = requests.get('https://www.google.com/')
doc = lxml.html.fromstring(response.content)
element = doc.cssselect("#hplogo")[0]
print lxml.html.tostring(element)
						</code>
						</pre>
					</section>
				</section>


				<!-- Ruby -->
				<section>
					<section>
						<h1>Ruby</h1>
						<br/>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>
					<section>
						<h2>Da Libz</h2>
						<ul>
							<li><a href="https://github.com/sparklemotion/mechanize">mechanize</a></li>
							<li><a href="https://github.com/sparklemotion/nokogiri">nokogiri</a></li>
							<hr/>
							<li><a href="http://watir.com/">watir</a></li>
						</ul>

						<br/>
						<br/>

						<p>
						<code>gem install mechanize nokogiri</code>
						</p>

					</section>
				</section>

				<section>
					<h1>THE END</h1>
					<h3>BY <NAME></h3>
				</section>

			</div>
		</div>

		<ul class="border">
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>

		<div id="fox">
		</div>

		<script src="lib/js/head.min.js"></script>
		<script src="js/reveal.min.js"></script>

		<script>

			// Full list of configuration options available here:
			// https://github.com/hakimel/reveal.js#configuration
			Reveal.initialize({
				width: 1024,
				height: 700,<commit_msg>add non-programming tools and caveats to presentation<commit_after><!doctype html>
<html lang="en">

	<head>
		<meta charset="utf-8">

		<title>reveal.js - The HTML Presentation Framework</title>

		<meta name="description" content="A framework for easily creating beautiful presentations using HTML">
		<meta name="author" content="<NAME> Hattab">

		<meta name="apple-mobile-web-app-capable" content="yes" />
		<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />

		<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, user-scalable=no">

		<script src="http://ajax.googleapis.com/ajax/libs/webfont/1.4.10/webfont.js"></script>
	    <script>
	        WebFont.load({
	             custom: {
	                 families: [
	                     'Gotham SSm:n4,n7',
	                     'Gotham:n4,n7'
	                 ],
	                 urls: [
	                     'http://s.npr.org/templates/css/fonts/GothamSSm.css',
	                     'http://s.npr.org/templates/css/fonts/Gotham.css'
	                 ]
	             },
	             timeout: 10000
	         });
	    </script>

		<link rel="stylesheet" href="css/reveal.min.css">
		<link rel="stylesheet" href="css/theme/fivethirtyeight.css" id="theme">

		<!-- For syntax highlighting -->
		<link rel="stylesheet" href="lib/css/zenburn.css">

		<!-- If the query includes 'print-pdf', include the PDF print sheet -->
		<script>
			if( window.location.search.match( /print-pdf/gi ) ) {
				var link = document.createElement( 'link' );
				link.rel = 'stylesheet';
				link.type = 'text/css';
				link.href = 'css/print/pdf.css';
				document.getElementsByTagName( 'head' )[0].appendChild( link );
			}
		</script>

		<!--[if lt IE 9]>
		<script src="lib/js/html5shiv.js"></script>
		<![endif]-->
	</head>

	<body>

		<div class="reveal">

			<!-- Any section element inside of this container is displayed as a slide -->
			<div class="slides">
				<section>
					<h1 style='font-size: 64px;'>Bro, do you even scrape?</h1>
					<h3 style='font-size: 45px;'>FiveThirtyEight</h3>
					<p>
						<small>Created by <a href="http://github.com/AlJohri"><NAME></a> / <a href="http://twitter.com/aljohri">@aljohri</a></small>
					</p>
				</section>
				<section>
					<section>
						<h1>Tools</h1>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>

					<section>
						<h4>Without Code</h4>
						<ul>
							<li>copy + paste</li>
							<li>import.io <span style="font-size: 30px;">[<a href = "https://import.io/features" target="_blank">features</a>] [<a href = "https://import.io/data/integrate/#home" target="_blank">integrations</a>]</span></li>
							<li><a href = "https://www.kimonolabs.com/" target="_blank"> kimono </a></li>
						</ul>
					</section>
				</section>
				<section>
					<section>
						<h1>High Level</h1>
						<br/>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>

					<section>
						<h2>Two Main Types</h2>
						<ul>
							<li>Simulate Browser</li>
							<li>Simulate GET, POST requests</li>
						</ul>
					</section>

					<section>
						<h3>Simulate Browser</h3>
						<ul>
							<li>slower</li>
							<li>things can move and change</li>
							<li>intutive to write</li>
						</ul>
					</section>

					<section>
						<h3>Simulate GET, POST requests</h3>
						<ul>
							<li>often requires a bit more digging to simulate javascript</li>
							<li>longer lasting (APIs don't change much)</li>
							<li><i>much, much</i> faster</li>
						</ul>
					</section>
<!--
					<section>
						<h4>Simulate GET, POST requests <i>(contd.)</i></h4>
						<img height=550px src="http://i.stack.imgur.com/NBa1j.jpg"/>
						<p>Always use the network tab!</p>
					</section>
 -->
				</section>

				<!-- Python -->
				<section>
					<section>
						<h1>Python</h1>
						<br/>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>
					<section>
						<h2>Da Libz</h2>
						<ul>
							<li><a href="http://docs.python-requests.org/en/latest/">requests</a>, <a href="http://lxml.de/">lxml</a>, <a href="https://pythonhosted.org/cssselect/">cssselect</a>, <a href="http://www.crummy.com/software/BeautifulSoup/">beautifulsoup</a></li>
							<li><a href="http://scrapy.org/">scrapy</a></li>
							<hr/>
							<li><a href="http://docs.seleniumhq.org/">selenium</a></li>
							<li><a href="http://jeanphix.me/Ghost.py/">ghost.py</a></li>
						</ul>

						<br/>
						<br/>

						<p>
						<code style="font-size: 30px;">pip install requests lxml cssselect beautifulsoup4</code>
						</p>

					</section>

					<section>
						<h2>Example</h2>
						<pre>
						<code>
import requests, lxml.html
response = requests.get('https://www.google.com/')
doc = lxml.html.fromstring(response.content)
element = doc.cssselect("#hplogo")[0]
print lxml.html.tostring(element)
						</code>
						</pre>
					</section>
				</section>


				<!-- Ruby -->
				<section>
					<section>
						<h1>Ruby</h1>
						<br/>
						<img height=200px src="http://i.imgur.com/MtZJ5Jm.jpg" style="box-shadow: none;" />
					</section>
					<section>
						<h2>Da Libz</h2>
						<ul>
							<li><a href="https://github.com/sparklemotion/mechanize">mechanize</a></li>
							<li><a href="https://github.com/sparklemotion/nokogiri">nokogiri</a></li>
							<hr/>
							<li><a href="http://watir.com/">watir</a></li>
						</ul>

						<br/>
						<br/>

						<p>
						<code>gem install mechanize nokogiri</code>
						</p>

					</section>
				</section>
				<section>
					<h2>Caveats</h2>
					<ul>
						<li>Legal Ramifications (Craigslist)</li>
						<li>Rate limits / Accidental DDOS</li>
						<li>Website can see your IP</li>
						<li>Scraping is a scary word</li>
					</ul>
				</section>
				<section>
					<h1>THE END</h1>
					<h3>BY <NAME></h3>
				</section>

			</div>
		</div>

		<ul class="border">
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
			<li></li>
		</ul>

		<div id="fox">
		</div>

		<script src="lib/js/head.min.js"></script>
		<script src="js/reveal.min.js"></script>

		<script>

			// Full list of configuration options available here:
			// https://github.com/hakimel/reveal.js#configuration
			Reveal.initialize({
				width: 1024,
				height: 700,
{'fraction_non_alphanumeric': 0.19692024437191397, 'fraction_numerical': 0.01439451000083689, 'mean_word_length': 2.313002495148323, 'pattern_counts': {'":': 0, '<': 478, '<?xml version=': 0, '>': 478, 'https://': 13, 'lorem ipsum': 0, 'www.': 5, 'xml': 12}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '3452394', 'n_tokens_mistral': 5742, 'n_tokens_neox': 4296, 'n_words': 773}