Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
pierian-data

Real-time collaboration for Jupyter Notebooks, Linux Terminals, LaTeX, VS Code, R IDE, and more,
all in one place. Commercial Alternative to JupyterHub.

GitHub Repository: pierian-data/complete-python-3-bootcamp
Path: blob/master/13-Web-Scraping/00-Guide-to-Web-Scraping.ipynb
Views: 648
Kernel: Python 3


Content Copyright by Pierian Data

Guide to Web Scraping

Let's get you started with web scraping and Python. Before we begin, here are some important rules to follow and understand:

  1. Always be respectful and try to get premission to scrape, do not bombard a website with scraping requests, otherwise your IP address may be blocked!

  2. Be aware that websites change often, meaning your code could go from working to totally broken from one day to the next.

  3. Pretty much every web scraping project of interest is a unique and custom job, so try your best to generalize the skills learned here.

OK, let's get started with the basics!

Basic components of a WebSite

HTML

HTML stands for Hypertext Markup Language and every website on the internet uses it to display information. Even the jupyter notebook system uses it to display this information in your browser. If you right click on a website and select "View Page Source" you can see the raw HTML of a web page. This is the information that Python will be looking at to grab information from. Let's take a look at a simple webpage's HTML:

<!DOCTYPE html> <html> <head> <title>Title on Browser Tab</title> </head> <body> <h1> Website Header </h1> <p> Some Paragraph </p> <body> </html>

Let's breakdown these components.

Every [removed] indicates a specific block type on the webpage:

1.<DOCTYPE html> HTML documents will always start with this type declaration, letting the browser know its an HTML file. 2. The component blocks of the HTML document are placed between <html> and </html>. 3. Meta data and script connections (like a link to a CSS file or a JS file) are often placed in the <head> block. 4. The <title> tag block defines the title of the webpage (its what shows up in the tab of a website you're visiting). 5. Is between <body> and </body> tags are the blocks that will be visible to the site visitor. 6. Headings are defined by the <h1> through <h6> tags, where the number represents the size of the heading. 7. Paragraphs are defined by the <p> tag, this is essentially just normal text on the website. There are many more tags than just these, such as <a> for hyperlinks, <table> for tables, <tr> for table rows, and <td> for table columns, and more!

CSS

CSS stands for Cascading Style Sheets, this is what gives "style" to a website, including colors and fonts, and even some animations! CSS uses tags such as id or class to connect an HTML element to a CSS feature, such as a particular color. id is a unique id for an HTML tag and must be unique within the HTML document, basically a single use connection. class defines a general style that can then be linked to multiple HTML tags. Basically if you only want a single html tag to be red, you would use an id tag, if you wanted several HTML tags/blocks to be red, you would create a class in your CSS doc and then link it to the rest of these blocks.

Scraping Guidelines

Keep in mind you should always have permission for the website you are scraping! Check a websites terms and conditions for more info. Also keep in mind that a computer can send requests to a website very fast, so a website may block your computer's ip address if you send too many requests too quickly. Lastly, websites change all the time! You will most likely need to update your code often for long term web-scraping jobs.

Web Scraping with Python

There are a few libraries you will need, you can go to your command line and install them with conda install (if you are using anaconda distribution), or pip install for other python distributions.

conda install requests conda install lxml conda install bs4

if you are not using the Anaconda Installation, you can use pip install instead of conda install, for example:

pip install requests pip install lxml pip install bs4

Now let's see what we can do with these libraries.


Example Task 0 - Grabbing the title of a page

Let's start very simple, we will grab the title of a page. Remember that this is the HTML block with the title tag. For this task we will use www.example.com which is a website specifically made to serve as an example domain. Let's go through the main steps:

import requests
# Step 1: Use the requests library to grab the page # Note, this may fail if you have a firewall blocking Python/Jupyter # Note sometimes you need to run this twice if it fails the first time res = requests.get("http://www.example.com")

This object is a requests.models.Response object and it actually contains the information from the website, for example:

type(res)
requests.models.Response
res.text
'<!doctype html>\n<html>\n<head>\n <title>Example Domain</title>\n\n <meta charset="utf-8" />\n <meta http-equiv="Content-type" content="text/html; charset=utf-8" />\n <meta name="viewport" content="width=device-width, initial-scale=1" />\n <style type="text/css">\n body {\n background-color: #f0f0f2;\n margin: 0;\n padding: 0;\n font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif;\n \n }\n div {\n width: 600px;\n margin: 5em auto;\n padding: 2em;\n background-color: #fdfdff;\n border-radius: 0.5em;\n box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02);\n }\n a:link, a:visited {\n color: #38488f;\n text-decoration: none;\n }\n @media (max-width: 700px) {\n div {\n margin: 0 auto;\n width: auto;\n }\n }\n </style> \n</head>\n\n<body>\n<div>\n <h1>Example Domain</h1>\n <p>This domain is for use in illustrative examples in documents. You may use this\n domain in literature without prior coordination or asking for permission.</p>\n <p><a href="https://www.iana.org/domains/example">More information...</a></p>\n</div>\n</body>\n</html>\n'

Now we use BeautifulSoup to analyze the extracted page. Technically we could use our own custom script to loook for items in the string of res.text but the BeautifulSoup library already has lots of built-in tools and methods to grab information from a string of this nature (basically an HTML file). Using BeautifulSoup we can create a "soup" object that contains all the "ingredients" of the webpage. Don't ask me about the weird library names, I didn't choose them! 😃

import bs4
soup = bs4.BeautifulSoup(res.text,"lxml")
soup
<!DOCTYPE html> <html> <head> <title>Example Domain</title> <meta charset="utf-8"/> <meta content="text/html; charset=utf-8" http-equiv="Content-type"/> <meta content="width=device-width, initial-scale=1" name="viewport"/> <style type="text/css"> body { background-color: #f0f0f2; margin: 0; padding: 0; font-family: -apple-system, system-ui, BlinkMacSystemFont, "Segoe UI", "Open Sans", "Helvetica Neue", Helvetica, Arial, sans-serif; } div { width: 600px; margin: 5em auto; padding: 2em; background-color: #fdfdff; border-radius: 0.5em; box-shadow: 2px 3px 7px 2px rgba(0,0,0,0.02); } a:link, a:visited { color: #38488f; text-decoration: none; } @media (max-width: 700px) { div { margin: 0 auto; width: auto; } } </style> </head> <body> <div> <h1>Example Domain</h1> <p>This domain is for use in illustrative examples in documents. You may use this domain in literature without prior coordination or asking for permission.</p> <p><a href="https://www.iana.org/domains/example">More information...</a></p> </div> </body> </html>

Now let's use the .select() method to grab elements. We are looking for the 'title' tag, so we will pass in 'title'

soup.select('title')
[<title>Example Domain</title>]

Notice what is returned here, its actually a list containing all the title elements (along with their tags). You can use indexing or even looping to grab the elements from the list. Since this object it still a specialized tag, we cna use method calls to grab just the text.

title_tag = soup.select('title')
title_tag[0]
<title>Example Domain</title>
type(title_tag[0])
bs4.element.Tag
title_tag[0].getText()
'Example Domain'

Example Task 1 - Grabbing all elements of a class

Let's try to grab all the section headings of the Wikipedia Article on Grace Hopper from this URL: https://en.wikipedia.org/wiki/Grace_Hopper

# First get the request res = requests.get('https://en.wikipedia.org/wiki/Grace_Hopper')
# Create a soup from request soup = bs4.BeautifulSoup(res.text,"lxml")

Now its time to figure out what we are actually looking for. Inspect the element on the page to see that the section headers have the class "mw-headline". Because this is a class and not a straight tag, we need to adhere to some syntax for CSS. In this case

Syntax to pass to the .select() method

Match Results

soup.select('div')

All elements with the <div> tag

soup.select('#some_id')

The HTML element containing the id attribute of some_id

soup.select('.notice')

All the HTML elements with the CSS class named notice

soup.select('div span')

Any elements named <span> that are within an element named <div>

soup.select('div > span')

Any elements named <span> that are directly within an element named <div>, with no other element in between

# note depending on your IP Address, # this class may be called something different soup.select(".toctext")
[<span class="mw-headline" id="Early_life_and_education">Early life and education</span>, <span class="mw-headline" id="Career">Career</span>, <span class="mw-headline" id="World_War_II">World War II</span>, <span class="mw-headline" id="UNIVAC">UNIVAC</span>, <span class="mw-headline" id="COBOL">COBOL</span>, <span class="mw-headline" id="Standards">Standards</span>, <span class="mw-headline" id="Retirement">Retirement</span>, <span class="mw-headline" id="Post-retirement">Post-retirement</span>, <span class="mw-headline" id="Anecdotes">Anecdotes</span>, <span class="mw-headline" id="Death">Death</span>, <span class="mw-headline" id="Dates_of_rank">Dates of rank</span>, <span class="mw-headline" id="Awards_and_honors">Awards and honors</span>, <span class="mw-headline" id="Military_awards">Military awards</span>, <span class="mw-headline" id="Other_awards">Other awards</span>, <span class="mw-headline" id="Legacy">Legacy</span>, <span class="mw-headline" id="Places">Places</span>, <span class="mw-headline" id="Programs">Programs</span>, <span class="mw-headline" id="In_popular_culture">In popular culture</span>, <span class="mw-headline" id="Grace_Hopper_Celebration_of_Women_in_Computing">Grace Hopper Celebration of Women in Computing</span>, <span class="mw-headline" id="Notes">Notes</span>, <span class="mw-headline" id="Obituary_notices">Obituary notices</span>, <span class="mw-headline" id="See_also">See also</span>, <span class="mw-headline" id="References">References</span>, <span class="mw-headline" id="Further_reading">Further reading</span>, <span class="mw-headline" id="External_links">External links</span>]
for item in soup.select(".toctext"): print(item.text)
Early life and education Career World War II UNIVAC COBOL Standards Retirement Post-retirement Anecdotes Death Dates of rank Awards and honors Military awards Other awards Legacy Places Programs In popular culture Grace Hopper Celebration of Women in Computing Notes Obituary notices See also References Further reading External links

Example Task 3 - Getting an Image from a Website

Let's attempt to grab the image of the Deep Blue Computer from this wikipedia article: https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)

res = requests.get("https://en.wikipedia.org/wiki/Deep_Blue_(chess_computer)")
soup = bs4.BeautifulSoup(res.text,'lxml')
image_info = soup.select('.thumbimage')
image_info
[<img alt="" class="thumbimage" data-file-height="601" data-file-width="400" decoding="async" height="331" src="//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/220px-Deep_Blue.jpg" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/330px-Deep_Blue.jpg 1.5x, //upload.wikimedia.org/wikipedia/commons/b/be/Deep_Blue.jpg 2x" width="220"/>, <img alt="" class="thumbimage" data-file-height="600" data-file-width="800" decoding="async" height="165" src="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Kasparov_Magath_1985_Hamburg-2.png/220px-Kasparov_Magath_1985_Hamburg-2.png" srcset="//upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Kasparov_Magath_1985_Hamburg-2.png/330px-Kasparov_Magath_1985_Hamburg-2.png 1.5x, //upload.wikimedia.org/wikipedia/commons/thumb/6/6f/Kasparov_Magath_1985_Hamburg-2.png/440px-Kasparov_Magath_1985_Hamburg-2.png 2x" width="220"/>]
len(image_info)
2
computer = image_info[0]
type(computer)
bs4.element.Tag

You can make dictionary like calls for parts of the Tag, in this case, we are interested in the src , or "source" of the image, which should be its own .jpg or .png link:

computer['src']
'//upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/220px-Deep_Blue.jpg'

We can actually display it with a markdown cell with the following:

<img src='https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/220px-Deep_Blue.jpg'>

Now that you have the actual src link, you can grab the image with requests and get along with the .content attribute. Note how we had to add https:// before the link, if you don't do this, requests will complain (but it gives you a pretty descriptive error code).

image_link = requests.get('https://upload.wikimedia.org/wikipedia/commons/thumb/b/be/Deep_Blue.jpg/220px-Deep_Blue.jpg')
# The raw content (its a binary file, meaning we will need to use binary read/write methods for saving it) image_link.content
b'\xff\xd8\xff\xe0\x00\x10JFIF\x00\x01\x01\x01\x00H\x00H\x00\x00\xff\xfe\x00CFile source: http://commons.wikimedia.org/wiki/File:Deep_Blue.jpg\xff\xe2\x02@ICC_PROFILE\x00\x01\x01\x00\x00\x020ADBE\x02\x10\x00\x00mntrRGB XYZ \x07\xcf\x00\x06\x00\x03\x00\x00\x00\x00\x00\x00acspAPPL\x00\x00\x00\x00none\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xf6\xd6\x00\x01\x00\x00\x00\x00\xd3-ADBE\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\ncprt\x00\x00\x00\xfc\x00\x00\x002desc\x00\x00\x010\x00\x00\x00kwtpt\x00\x00\x01\x9c\x00\x00\x00\x14bkpt\x00\x00\x01\xb0\x00\x00\x00\x14rTRC\x00\x00\x01\xc4\x00\x00\x00\x0egTRC\x00\x00\x01\xd4\x00\x00\x00\x0ebTRC\x00\x00\x01\xe4\x00\x00\x00\x0erXYZ\x00\x00\x01\xf4\x00\x00\x00\x14gXYZ\x00\x00\x02\x08\x00\x00\x00\x14bXYZ\x00\x00\x02\x1c\x00\x00\x00\x14text\x00\x00\x00\x00Copyright 1999 Adobe Systems Incorporated\x00\x00\x00desc\x00\x00\x00\x00\x00\x00\x00\x11Adobe RGB (1998)\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00XYZ \x00\x00\x00\x00\x00\x00\xf3Q\x00\x01\x00\x00\x00\x01\x16\xccXYZ \x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00curv\x00\x00\x00\x00\x00\x00\x00\x01\x023\x00\x00curv\x00\x00\x00\x00\x00\x00\x00\x01\x023\x00\x00curv\x00\x00\x00\x00\x00\x00\x00\x01\x023\x00\x00XYZ \x00\x00\x00\x00\x00\x00\x9c\x18\x00\x00O\xa5\x00\x00\x04\xfcXYZ \x00\x00\x00\x00\x00\x004\x8d\x00\x00\xa0,\x00\x00\x0f\x95XYZ \x00\x00\x00\x00\x00\x00&1\x00\x00\x10/\x00\x00\xbe\x9c\xff\xdb\x00C\x00\x06\x04\x05\x06\x05\x04\x06\x06\x05\x06\x07\x07\x06\x08\n\x10\n\n\t\t\n\x14\x0e\x0f\x0c\x10\x17\x14\x18\x18\x17\x14\x16\x16\x1a\x1d%\x1f\x1a\x1b#\x1c\x16\x16 , #&\')*)\x19\x1f-0-(0%()(\xff\xdb\x00C\x01\x07\x07\x07\n\x08\n\x13\n\n\x13(\x1a\x16\x1a((((((((((((((((((((((((((((((((((((((((((((((((((\xff\xc0\x00\x11\x08\x01K\x00\xdc\x03\x01\x11\x00\x02\x11\x01\x03\x11\x01\xff\xc4\x00\x1d\x00\x00\x01\x04\x03\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x03\x01\x02\x04\x07\x00\x05\x08\x06\t\xff\xc4\x00[\x10\x00\x01\x03\x02\x03\x04\x05\x07\x07\x06\t\x07\t\t\x00\x00\x01\x02\x03\x11\x00\x04\x05!1\x06\x12AQ\x07\x13"aq\x142\x81\x91\xa1\xb1\xc1#$BRbr\xd1\x08\x1534s\xf0\x17CS\x82\xa2\xa3\xb2\xb3\xe1\x16%Dc\x92\x94\xc2&56Te\x83\x84\x93\xc37Utu\xa4\xb4\xd2\xd3\xf1\xff\xc4\x00\x1a\x01\x01\x01\x01\x01\x01\x01\x01\x00\x00\x00\x00\x00\x00\x00\x00\x00\x01\x00\x02\x03\x04\x05\x06\xff\xc4\x004\x11\x01\x01\x00\x02\x01\x03\x02\x04\x03\x07\x04\x02\x03\x00\x00\x00\x00\x01\x02\x11!\x03\x121AQ\x04\x13aq\x05"\x8123B\xa1\xb1\xc1\xf0\x14#\x91\xd1\x15\xe1Rr\xd2\xff\xda\x00\x0c\x03\x01\x00\x02\x11\x03\x11\x00?\x00\xf5\x8c\xf4\x85io\xb4\xb85\xde%h\xb6\x9bi\xc5\xa5kd\xef\xc6\xf2\x08\x989\xf1\xafe\xfc\';\x96\xbayn\xb8O\xc4\xf0\x98\xde\xf9\xa5\xc9\x83\xe2V\x98\xbe\x1a\xc5\xf6\x1e\xef[j\xf0%\x0b\xdd)\x980r=\xe2\xbc\x1d^\x96]\x1c\xefO9\xab\x1e\xce\x9fS\x1e\xae3<|T\xe1\\\xda-H\xb5\x06\x10\x08 \x80A\xc8\x83\xc6\x90\xd2+\x0c\xba\xc2\x96]\xc0\x96\x95[\x04\x99\xc3\x1dT5\xff\x00t\xa8\x96\x8f\xd9\xcd\x1d\xc9\xd6\x96\xad\xdf\xed\x7f\xcf\xfd\xa7\xd8b\xb6\xd7\x8f\x1bq\xbe\xc5\xe2S\xbc\xbbW\xc6\xeb\xa9\x1c\xe3E\x0f\xb4\x92S\xdfS6X\x9dPa\xd0\xd4\x9e;\xc9Q\x88m\x05\xdbN)\xf6J]}m\xba\xc3\x9b\x8bB\xa5\x81 \xfa\xf22\x0e\x84\x1a}[\xfe\x19\xfe{\xb6\xff\x00\x99\xae\x1f\xbe\xb2\x7f\x11\xc4Up\x9b2T\xda\x1bd5\xd6(\xc7i\xc3&H\x81\xe6\xee\x8dr\xe53\xb9\xae\x12\xd0\x9f\x9d\xdd~\xd4g\xfc\xc4\xd3\x19\xa9\x0b\x1f$\xaf\no\x8a\xa7\x95\x03\xf9G\xff\x00\xd2\\\x07\x9f\x90;\xfd\xe2k\x13\xf6cW\xd5\xa1\xe8M\xb5/\xa4\xcc#sT\xa1\xf5\x12\x0cG\xc9(O~\xba~\x15\xd7\xa7<\xfd\xbf\xbb\x9e~\x8e\xa0\nZ\n\xc2\xdf\xc9\x11\x99H\xce\xb5\xaffvpu\xc0\xde\xfa\xd2\x00\x90\x00"\x0ef\'\xba\x8ds\xa8\xb6\x81\x88\xed\x16\x19\x86\xdf\xdb\xd8\xdf^2\xdd\xeb\xf9\xb6\xc2ek#\x9e\xe8\x04\x81\xder\xa6a\x95\x9b\x91\x9b\xd4\xc6][\xcbh\x97\x01\x00\x80`\xf7Vt\xd6\xce\x0b\x06\xa3\xb2\xd4\x99ReI\x95&T\x99ReI\xc4Ww\xca\xb9\xbf\xb7\x0e\xc2\x82VF\xee\x99\x9c\x81\xf4W\xea{5\xd6\xc2\xcb\xea\xfc\xfc\xcf\xfd\xbc\xbb\xa6\xf7\x1d5\xd0\xda\xf7\xba<\xc2\xf3\x9d\xd2\xea\x7f\xac5\xf0?\x17\x9a\xf8\xcc\xff\x00O\xe8\xfb\x7f\x86\xdd\xfc6\x1f\xe7\xad{q_9\xec-H\xa2\xa0Z\x91iH\xd7\xf6\x16\xb7\xed\xa17l\xa5e\xb5o6\xb9)[j\xfa\xc8P\xcd\'\xbc\x1aF\xec\xf0\x818\x9e\x14\xc8\xde\xeb1{t\x9c\xd4\x02Sr\x94\xf3\x81\tr;\xb7Or\x8d&\xea\xfd\x1b\x0b\x1b\xeblB\xdc\xbdd\xf2^l\x12\x85n\xea\x95\rR\xa0sJ\x87\x10`\x8a\x19\xb2\xcf-\x06\x1d\xff\x00J\xee\x80\xe0_=\xd9\xad\x8a\xbdk\x7f\xc3?\xcfw\xa9\xa9\xcd\t\x1f\xad\xdd~\xd0\x7fa5\xa9U\x19\xdf\xd0\xaf\xc2\xabxS\xca\x81\xfc\xa4\x07\xfc\xa6\xc0\x0f\x0f!{\xfb\xc4\xd6\'\x88\xd5\xf5iz\x0f\xdf\x1d%a\x9dXI\x96\x9f\x991\x03\xab\xd7\xd7\x15\xdb\xa5\xe3/\xb7\xf7\x8ey\xfa:>\xf2\xea\xd3\t\x17x\x8e+z\x96m\xd0\x94\x82\xb7\x96\x12\x84e\xa2G3=\xe4\xe49WM\\\xa4\x98\xc7+f\x1b\xcb*\xd2\xb3\x8a\xe2;J\x8b\x84\xd8[\xdc\xe1xJ\xd1\xb8\xd6 \xe2Bn\x1cYRaM\xb6\xa0BS\x1b\xd9\xa8Nc!Z\x98\xcc<\xf3X\xee\xcb9\xed?\x9bi\x80`\xb6\x18K>P\xd27\xae\xdci\xb0\xfd\xe3\xca\xdeu\xe2\x94\x84\x82\xb5\x9c\xc9\x81Y\xcb+x\xf4k\x1cf3\x84\xc5]\xa9\xc5n\xda \xa8\xfdr2\xf5Vu\xee~\xc5E\xb8+\xdeyJu\xcf\x1d?~\xea\x8e\x92\xd0\x83\x94\xf6@\xe0(jA(,\xa92\xa4\xca\x91\n\x80\xd6\x8bQ7\x95\xc19w\x9a7S\x83\x9e\\^\xb5\x1c\x1d\x1e\xfa\xfdm\xfd\xf67\xea\xfc\xe6<\xf4\xec\xfa:\x9b\xa0\xd77\xfa>\xb5\x1fV\xe1\xe4\xff\x00N\xbe\x17\xe3s_\x19\x97\xda\x7fG\xda\xfc*\xef\xe1\xb1\xfd\x7f\xadX"\xbeS\xe8\x94T\x0bR-!\xa8\xdaM\xa6\xc16f\xd9\xb7\xf1\xfcR\xd6\xc1\xb7\t\r\xf5\xab\xed.5\xddH\xcdQ\x96\x83\x8d[\x1fg\x84\xb8\xe9\xdfb\xdaQ\x08s\x14x\x0e(\xb2P\x07\xfd\xa8\xaa}\x92"\xff\x00(\x1d\x90NI\xb3\xc7W\xe1l\x81\xefX\xa7\xf4\x1c\xb4\x98\xa7N[\'qt\x8b\xcbL/h\xed\xef\x90#\xcaYm\x84\xa9i\xfa\xab\x05d-=\xca\x19p \xe7N\xef\xb1\x9cy\xf0\xd7\xa3\xa7\x8c)\x8ci\xdb\xd6\xb0\x1cIhYp\x84\xa9\xd6\x92\xa8Ph\xe7\x99\xd1M\xab\xd0EZ\xbeV\xf8\xd2j\xff\x00)\x0bO\xe2\xf6V\xf4\xfd\xfb\xc6\xd3\xee\x06\xad2\x80\xe7\xe5\x1e\x86M\xc3\xc3d\x96\xa0\xa5\x05A\xc4@ @\x1fS\xba\xadP}\xd7\xe5 \xdb\xd6hs\r\xd9gU\xbc!^Uz\x13\x07\xbbq&F]\xd4\xea\xde\x17>U\xee\xdf\xf4\x98\xee\xd9\xe2\x16WWX3V\x8a\xb4il\xa5-\xdd)aAJ\x06L\xa4F\x94Ln\x9a\xee@\xd9=\xb9\xba\xd9\xac~\xdf\x16\xb0\xb0ao\xb2\x16\x02\x1eu[\xaa\n\x10A\x8fA\x9e\xea\xe9\x8c\xedc+\xbf\r\xd2\xba^\xc7\x1e\xc6\x86)\x88a\xd8f%t\x83,\x0b\xb0\xe1n\xdb\xf6m\x85\x00<s<\xc9\xae\x93;\xe2p\xe5\xf2\xf9\xdf\xabr\xe7\xe5\t\xb5\xae&\x0e\x1d\xb3\xe9H \xfe\x85\xd3\xa6\x7f\xcaVw\xa3e\xf1\xb4Wzu\xdb\x17H\x05\xac\x11 d\x94\xf9\x1a\x88O\xadt\xd11\xbe\xe9\xb8wO\x1b\\\xdb\x8b\x0f\xda`o6\xa4\xe4\x84\xdb\xb8\xdc\x18\xd6B\xcc\xd1x:\xbe\xee\x85\xe8\xdbh\x97\xb5\x9b\x19\x87\xe3N\xda"\xcd\xcb\x9e\xb0)\x948\\\x00\xa1\xc5 \x90\xa2\x01\xcfvt\xcah\xb3G\x1f\xab\xd3P\xd3*L\xa90\x9a6\x89\xa8\xd7.\xea<\xa2\x80\x06\x94\xc9"fT\xa7\xcf\xbb\xcb\x83\xe5\xad\xe7\xfch\xf7\xd7\xeb3\xfd\xec\xfb\xbf7\xd3\xe7\xa7\xfa:W\xa0\xfd\xa7\xc3lv\x1d\xd6\xef\xd7sn\x19\xbcv\\]\xa3\xbd\\\x18>xIO\xb6\xbe\x1f\xe3\xb6_\x8b\xdf\xd2>\xdf\xe1\x18\xdf\xf4\xd3\xf5Y\x03j\xf0\x00\x90\xa5cV\x08\x04ov\xdd\t1\xe9\xaf\x8f\xb8\xfa]\xb9{%\xb1\x8d\xe17\x04\x0b|W\x0ft\xeb\x08\xb9A>\xfaw=\xc5\x96y\x89b\xee\xd8\xe9snr\x9f\xd2\xa7\xf1\xa9\x9d\x9e.X$\x80\xfb$\x8e\x1db\x7f\x1aF\xdc\xf3\xf9U]0\xed\xe6\xc9\x9bw\x99t\x86\xef\x12\xae\xadaDJ\x99\xe5\xe0}T\xce|%$\x86\xd6\xfb\x8d\xb6\xd8\x97\x1cRP\x90H\x02I\x00\t9\x0c\xcf\x1a\xd0\xafI\xfc\x1fmO^\x86N\x0eR\xea\xde6\xe1&\xe5\x9c\x9c\xfa\xa7\xb7\x91\x91\x1d\xe4\x81\xa9\x15\xae\xd4\xd1b\xb8M\xf6\x13\xe4j\xc4\x18\x0c\x1b\xc6<\xa1\x94\xef\x82\xa2\x89\x89RFi3\xc0\xd5f\x85k\x94 \x8c\xaa\x9f@h0u\xce\xafD\x05\xef\xea\xae\xea\t\x13F\xb8Z&\x19\x9d\x80\x93\xfe9\x9a\xbdH\xaa\xc8\x9a\xd4\xac\xd2\x03\x07X\xf4\xd3\xbfP\xdaY`X\x9d\xf5\x8f\x96\xd9\xda)\xfb}\xe5#y\x0b\x13)\xf3\xbb:\xe5#\x86S4\xa4\x91\xb2x\xf4\xad?\x9b^\x1b\x84\x85I\x19F\xbcyI\xf0\x93L\x95\x01w\x82b\x16Xsw\xd7-\xb6\xdb\x0e\x90\x11.\r\xe5f\x06C\x8cH\x06&3\x98\x83\x15\x9a\x08\xac\x18X\xd4e\xf0\xa2\xad;\x0f\xa0\x01\x1d\x12\xe0]\xe6\xe0\xff\x00\xf5\x0eQ\x90\xc5aVv\xd3*\xe52\x94\xca\x93\x08\x04A\x19T\x8dPN\xe1\x07$\xc7\x03\x11F\xbd\x11\x81\xd4Gd\xa9@e!%^\xda\x93\x84\xb6\xf5\xeb5\xe3A\x16XN\x1f\x87\xbbn\xb2\x97\xd5\x87\\\xad\xe6.\x15!A\xc6\xe7\xcdLp\x19g_\xa2\xe9L\xe7\xe6\xcb+y\xdf3V}\xfe\xaf\x91\xd7\xb8\\\xac\xc6I\xf6\xf1V\xa7D[Jl\xb0\xbb\x8b[}\xad\xd9\xec=\xc7nT\xe2mqf\x16\xda\x8c\x84\xc1J\xc3\x89\n\x071\x1c\x08\xef\xaf\x9d\xf8\xceS\xa9\xd7\x99\xcb\xc6\xbf\xbb\xdd\xf8T\x9d>\x8ff^v\xb7\xec\xd8\xda\xfb\x9br\xed\xbe1\xb37\xcd\xaaJ\x1cn\xd9\xd03\xd3\xcdq@\xc7\xa2k\xe4M\xdf\x0f\xa5\xdd\x8f\xd4\x978V\xd4\x10\x15p\xe6\xcc]\x1e-\xbbb\xf2\'\xf9\xdb\xca\x8fQ\xab\xeefS\xd3\x7f\xe7\xea\x8e\xce\x07\x8d\x8d\xe0vkc\xd0\x93\xa1\x0f,\x8fH\xea*\xd1\xef\xfa\x8e0LSwu[9\xb2\x9b\xdb\xa4\x05%\xd5@<$\x16f<\rZ\x1d\xff\x00Z\xa5\x7f(\xec>\xfa\xc0\xec\xaf\x97\xdb`\xf6\xfb\xc2\xe9-\xa7\riH\x02\x0bD\x85\x13\xaf\x0808\xd6\xf1\x9c9\xe5w\xea\xa9\xa1$\r\xf6\xfa\xd6\xc1IR$\xa4,e"Fbt\x91L\x9e\xcc\xed\xee\xdf\xe9\x1d\xb4\xa9j\xb7\xd9\x9bf\x9bw\x12V(\xb4\xaf\x10qD:H2\x08H\x82\nRG\x0e\x10k{\xe1\x9e^Ci\xf6\x82\xe7in\xac\xee\xb1&ZM\xfb,y;\xaf\xb6\xa5|\xb8\n*IRNI)\xdeP\xcbY\xa2\xf3\xca\x9cV\xa0\t\x04\xc11\x993Qf\xe8\xde15O\x02\xa3\xdf\x00-\x1d\x19\x0e\xce\xa6\xa8\xbdM\xc3\xa3\xc8\x06\\t\xf4\x9a\xa4\xe5T\x92\x01\x1a\n\xa0\xacJ7\xd6\x12\x00\x04\xe94\xfah\x0e\xce%\x7fol\x96mon\x19`,\xb8\x946\xad\xd0\x95\xeb\xbc9\x1e\xf1\x9f\xac\xd6\xa5\x16\x11x\x96&TC\x98\x8d\xf4\xa4\x00\x12\xa7\xd5\x90\xf0\xf0\'\xd6y\xd5r\xa3\xb6\x06]}\xd4\xa1\x0f>\xe3\xa8A*B\\Y (\x80\t\x13\xc4\x80$\xf1\x815n\xeb\x93\'\xb2M\x99\x1dz\'p\x8c\xe7|H\xd0\xd1\x92u\xef\xe4\xf5?\xc1\x16\x06L\x99U\xce\xa7O\x9c9\\\xb2\xca\xdadX\xf9M[\x90\x96kR\xca\x19ZF\x95A\x88$\xf7\n6\x88w\xd5\xc9\x03\xd6jD\xeaRL\xaeV~\xd6ts|\xa1)N!\xdb|>\xcd\x18\xea\xae,q\x8c7\x10\x17\x0e\x12\xe0\xc3Y-6\xca\xd3\xba\x0f`\xc8\xedL\xf6L\x135\xfa_\x86\x99e;r\xc7,u\xefw_\x13\xe2\xee8e\xb9\x94\xbb\xf6\x9al\xb0-\x9e^#l\xf1B\xedT\x12\xb0\x92\x87\xd9$\x1c\xb9\xa4\xfc+\xc5\xf1\xdb\xc3)+\xd9\xf0z\xcf\x1bS\x9b\xd8\xa7\xedV\x1d\xb4\xb1a\xa7\x01\xfd%\x8d\xe2\x99W\xb9>\xfa\xf9\xb7\xb7/\xda\x8fl\x96x\xad\xcd\xa5\xf6\xd9a[\xa6\xd7\x1a\xdavBt\x0e\x91x\x8f\xe9o\xd6n\x18}\x8d\xb9F\xe2\xcb\xa4\xdd\xb0\xb3\xec\xbf}\x82^\x9eW\xd6\x8a\xb6Y\xf4\x82\x91\xec\xac\xde\x94\xf3)\x99\xdfX\xf4\x96=-\xe2\xa1)\xf2\xed\x93\xeb\xd3\xc5\xcc6\xfd.\xcf\x82T\x07\xbe\xb3\xf2\xabS\xa8\xac\xff\x00(=\xb3\xc3\xf6\xb9\x1b<,\xad1\x0bW\xac\x97p\x1dn\xf1\x90\x827\x83q\x04\x12\x0ei:\x1a\xb5g\x14\xcb\xbeU\x8bF\x14s\x00\xc0\xe3\xddA\xa6\\\x99Bt\xd7\xe1P\x9bFN\x7f\xbe\xb5\x0b\x0e\x1ec\x90\x07\x9b\x9e}\xe2\xb5\xa4\xc0\xa2\x14\x0c\xe63\xca\x8f\xb2\xda=\xe9\xf9\xb3\xc7\xba{\xea\xf06\x16\x1b\x95\x80"G\xa7\xbc\xd3\xaeRP\xd33F\x88\xd6\xa3z\xe1\xb4\xf9\xb3>\xe3PG\x12R4\xd2\x98\x8c\x02N~\x1c\xe9\xd8\x19#3\xcf_\n\x97\x84\x86\x0f\xca\'\xb2\x14 \xe5=\xc6\xb3\x92\x8e\xc2\xfc\x9f\x04tC\x80\x7f\xe2?\xfb\x87+2%\x82\xa7\x90\x0c\x03\xbc\xaeI\xcc\xd5u<\xa2\x02\xe2\xa2\x12\x10;\xf34\xcb\xec\x85\xad&T\x99F\xbdS)L\xa98?\x13\xc5\xae\xf1Lq\xcb\xdcQ\xd2\xfd\xd2\xd4\x90\xb7\x14\x84\xa4\xa8$\x00&\x00\xce\x00\x13\xdd_\xb1\xc3\xa5\x87G\xfd\xbc&\xa4~W\xab\xd6\xcf\xad~fwuqtW\xd4^X_\x9e\xad$\x07\x91\xa8\xe6\x93_\x07\xf1m\xcc\xf1\xfbW\xdd\xfc*\xcc\xbaw\xee\xb0\x13\x86Z,f\xcaG\x81\x8a\xf9\x1d\xf9>\xa7la\xc1-\x8f\x9a\\O\xa6j\xf9\x94|\xb8C\x82\x0c\xc7]\xbc\x9eKL\x8a~`\xec@\xb9\xd9\x1b\x17\x8e\xf3\x96\x16.+\xeb\x06\xc2\x15\xeb\x10i\x9dH;\x15\x0fO\x18;xM\xb6\x03\xd4\xb2[K\x8e\xdc\'5\x95\xceM\x9dI&\x99\x97p\xed\xedV\xa4KY\xfdQ\xee\xa2\xa2(|\x92\x0e\x99\x11>\x9a\xa2\xd8;\xba\x91\xa51V(\x94\x85\x00\x99\xde\x11\xe8\x91\xf8S#6\xfb\x1bT@^\x8f\x9a\xbd\xf7t\xa9\x19\x86\xfe\xa24\x9f\xf15z\xa4\xc0\x04(\xce`\xe5V\xb9Ea\xe5\xb1p\x97Z0\xb4\xcc\x12\'PA\xcb\xc0\x9a|\x08\x12S\xbb\x00\r\x07\xc2\x83\xc9\x02x\x91\x950\n\x84\xe4\xa3\x04\xf7\xf0\x15#\xd0~U2s\x8a\xce^\x04v\x1f@\r\x85tC\xb3\xfb\xe5DC\xe6\t\xcb\xf4\xee{+;\xbe\xa6E\x8a\x00H\x84\x80\x07 (\xb9DQV$\xb5\xd02\xa4\xca\x93*L\xa98sl\xd5b\x8ce\xa6,0\xec2\xd1\xc6\xc6\xfb\x8faw\xab\xb8a\xf0\xa0\nc\x7f\xcd)\x82\r~\xa7\xe1\xaewyg\x95\xbf\xfd\xa6\xac|\x0f\x8d\xf9sX\xe1\'\xde]\xc5\x95\xd0\xc2\xfee\x89\x8f\xf5\x8d\x1fa\xaf\x95\xf8\xc7\xeda\xfa\xbe\x87\xe1\x1f\xb1\x97\xde-fU\xd9\xaf\x89_a%\x06\x84$\xf2\xa92jJG\xf2\x99\xcf\x0e\xd9\xd3\xca\xe6\xe0z\xd0\x8a\xdfO\x9bX\xcf\xc2\x9d\x07\xe4\xa7\xec\x03\xec\xae\x8c\x15S\xb8\x89\x8d\x08\xf6\xd1F\xbdC\x90s\xa6xF\xac\x88\x9fm1\x1b\xbc8g\xdf\x15\r\x03|A\xb5|p\xdd\xaa\x1b\xc08Q\xf9\x88\x93\xe9\xf4\x9a\xb5\xc8L$\x1f\xa4\x07q\x11N\xc1\xa0\x82L\x1a\x0c\xe5\x92\x01#xT\x18#x\x89\x14\xfap\x8e\x19$\x92"Fb\xa4;\xec-\x87\x99.\xa4\x80\xb4\x92\x0f1&\xb3\x971Ga\xfeO\xd9t?\xb3\x9d\xed\xba\x7f\xae]g\xd1,*\xceE\x94\xc4Z\xe8\x19ReI\x07\x15\xc60\xdc%\xb0\xe6)\x7fkf\x92$\x17\xddJ\'\xc2Nt\\\xa4\xf2\x9e:\xf3\xa5\xad\x94\xb7|\xb6\x8b\xab\xbb\x80>\x9b6\x8e)>\xb8\xce\xb9\xde\xac\xf4=\xb7\xd9\xc8\xb8\xe5\xa5\xa5\x8e&Sa\x88\xb1\x88\xb0R\x97\x03\xcd4\xb6\xc4\x9dR\xa4\xa8H"<3\x19\xd7\xedfy\xe7\xbc\xb3\xc7\xb6\xfbq\x7f\xa3\xf2\xfd\\1\xc3S\x0c\xbb\xa2\xd0\xe8n\xec%\x8cH\x1c\xf3h\xe5\xfc\xea\xf8_\x8b\xe5\xce?\xab\xec\xfe\x13?&_\xa2\xd8b\xf1\xb8\xceG\xa2\xbe%\xaf\xb1\xa4\xd6\xee\x9a\xfa\xfe\xb1F\xe2\xd0\xa2\xe1\xb3\xa3\x89\xf5\xd1\xb5\xa3\xc3\x80\x8c\x88\xa9)o\xcaUC\xf3^\x05\x074\xdd\xbd\xedi?\x85t\xe9y\xacg\xe1O\xa7\xf4#3\xe6\n\xeb\\\x8a\xeehL\xf0\n\xd0w\xd0\x80\xd3:\x91\xed\x8f\x93\xb8\x98\xcd\x95\x0fh\xado\xd1PG\x9c4\x89\x1a\xe9T\x00^\x90m\xdf \x00\nL\x019T\xa8x^v\x00\xfe\xfeq\xaa\xf9\xd2\xd2VCBj\x88k@K\xca\x00I\r8c\xc1\x06\xaa\x11\xa6D\xe7\x15I\xa4S\xdbp\x90\x06f`\x0c\x85i\t\xac\x83\xca$\xd5RM\xed\xd2\xae\x1e\xb7\x067[n\x04\x08<{\xeb\x17\xc2\x8e\xc2\xe8\x07\xff\x00c\xfb5?\xc8\xac\xff\x00Z\xba\xc7\x84\xb0\rf\xd2QN>Qk\xa8x\xbd\xa1\xc7\xf6\x9d8\xbd\xce\x1d\xb3\xbb<\x97\xc3;\xb1yt\xe1KK\x94\x82`e11\xe7j+\x9eYe\xbdc\x0e\x9a\xa5\xec\xce\xdcc_\xf3\xc6\xd37\x87\xb2uf\xc1\x04\x11\xdd#t\xff\x00H\xd6{s\xbei\xfc\xb13\x0c\xe8\xabg-\x1c\xebn\xda\x7f\x10|\xf9\xcb\xb8sS\xcf\xb3\x13\xe9&\x99\xd3\x91w\xfb=e\xae\x07\x85Z2\x1a\xb6\xc3l\x9alh\x94\xb2\x90=\xd5\xbe\xdcF\xeb\x81\xae\x14z\xc5g\xc0W\xee:\x9ek\xf2xN"\xca\xe8y\xde\xce$2\xf3Z\xf7\xaa\xbf5\xf8\xb7\xf0\xfe\xaf\xbf\xf8W\x8c\xff\x00E\xae\xca\xfb5\xf0\xeb\xec%!yP\x8e.\xc0\xce\xa4\x11~|\xdd9\xd5\xa1\xb5q\xf9A\xf6\xb6Gg\x95\x00\x91~\xf0\x93\xfb\x1f\xf0\xae\xfd\'.\xa2\xa1\x13\xe4\xe3\xf6\x7f\x8dt\xbe\\\xb6z\xff\x00F\x93\x91\x04\x1c\xbd4R\x00\x10I\xec\x98\xa6\xa8rT\x12\x1c\x04\x03\xbc\x82\x91\xe9\x8c\xfd\x95\xa8\xb6\x10\x1d\xa8\xe7\x9d\x1a\x08\xf7s\xe4\xcfr\xdc&\xa0f\x17\x9d\x86|?\xfc\xa8\x97\x92\x98\x11!Fr\xe5J\x16\xc6\xe16\xcf\xba\xb5\xa0\xaf}\x97\x99\x80b\n\xd0\xa4\x83\xe8\x99\x8ag\x02\xf2\x8c\x91\xe1<*U\xec6/e\xd9\xc4\x1aF%\x88-\x0fZ%@\x8bf\xc9%`(\x02\x16\xa1\x90\xce%\x19+uAC(\x9dI\xc6\xd9k6\x93\n\xb7\xc2T\xcfR\xeb\x85o-G\xa9p\xa4\xa9\x08\xc8\xa6cX\xccO\x1c\xa8\xca\x1d\xb4\x87\xf4\xed\xf2"+\x19\x17g\xf4\x07\x97C\xfb1\xff\x00\xc3\xa8\xff\x00X\xaa\xe7L{\xd5\x1d+4\x90\x1c\xc5X\xf9TJ\xee\xc9\x8a9\xd7\x1c\xad\xd9\x91\x93F\xcb&\x84I\xa98\'h\xf0\xb4\xe1N0Q\x8aa\x98\x88}*!V\x0f\x17\x02"<\xe9\x00\x89\x04\x11\xe9\xaf\xdbc\xd6\xbd[w\x8d\xc7^\xef\xceu~\x1b\xe4\xc9\xac\xa5\xfb=\x87D\x0e\x8d\xfc@\x03\xf4\x1a\xf4fk\xe1\xfe-\xe3\x1b\xf7}o\xc2\xfce\xfa-\x86\x17\xd9\x15\xf0\xeb\xeb\xa4\x97BFg\xd1F\x80E\xc2\xb3\x99\xabH\xa9W}!\xe0\xfa|\xedlN\x08ybN{XUv\xe9ys\xcf\x95B\xd7\xea\xa9\xd3\xcc\xae\x96n\xb9l\xf5\x90P\x82 \x0c\xc5\x1fB\x10\x8ec\x97\x85h\x10\xc6Z@:Q\x03\x0f\x19#^\x14\xec\xa3^~\xaa\xf0\x9c\xf7\x0e\x86\x8f@\x0e\x14G\x91\t\xe6{\xf8\xd5<\x9bSTG1\x02)d\xc2F\xb2\x06Z\xd4t\xc3\xcaG\xf8U\x15\x11\x9b\x97\xd8\x1b\xb6\xf7/\xb27\xb7\xe1\xb7\x14\x91\xbd\x110\x0e\xb1\x94\xd38\x06\x01\x91\xd4\xe455\x9b}\xd41G\xe7(\x03\x95Y\x18\xed>\x82\x04tC\xb2\xdd\xf6\x80\xfa\xd4\xaa\xe3L{\x97\x0e\x95\x92D\xf9\xc2\x9c|\xaa5wd%\x1e\xd1\xae\x19yj\x12hL\x9a\x8b&\xa4\xf9\xf1|\xbe\xb2\xe9\xc7J\x1bA\\\xa8\xa5\xb4\x84\xa4\x12x\x01\xa0\xee\xaf\xdeg5\xc4~Ver\xe5\xeez#XK\xd8\x97\x00P\xdc\xe7\xf6\x8d~{\xf1^f?\xab\xed~\x17\xfc\x7f\xa2\xd5n\xe3\xb3\t\xcf\xbe\xbe\x1e\x9f_i\x01\xc2\xa1\x9c\xd5\xa1\xe4\xe0\xaa\x91\xe9]Z[x\x8e\x9d\xcc\xec&\x15\xc61B=l.\xba\xf4\xbc\xb9\xe6\xa8X\xfdU\xa3\x9eH\xf8\x9a\xeb\\\xd8\x7fWG\x11*\xe1\xe1Y[\x0b y\x98\xa5\rh\xd7X^\x1b\xbb\xdb\xb6\xee\xb9\x1c\xb7S3\xe8\xadI\xb1@\x06U\x9c\xc5e\x03\x7f\xbb\xd4\xdc\x14$\xee\x94\x92\x013\x97\x8dR{\x900\x9f\xd4\x8c\xf1\x9f}"&\x1euJ\x8f\xb7IS\xdb\xa9\x04\x92\x95e\x1fd\xd5\xe5x\x04f\x90O\x8c\xd3\x11\xca!N(\x84\x94\x83\x9c\x031G\xa88f\x14O\x01\xeb\xd2\xaaC\\\xf5\xed\xf2\x02\xb3\x92\x8e\xd5\xe8,\x11\xd1\x16\xca\x03\x9f\xccPg\xd2k\x9e\xcc{\x85\x80b\x8dE\x18\x13\xda\x14\xc9\xca\xd8\x95\xd4<\xbe+\xb4\x8b\xb1z\xe8~e\xc4\x9dC%P\xeaWn\x84;\x02IF\xf3\x80\x9eZL\xd3\x8f\xc3\xdc\xef\x19N~\xff\x00\xda9\xe5\xd5\xed\xf4\xfe\x9f\xde\xb4\xef\xed\xd2\x80\n\xb5\xc3\xed^l\x8c\x96\xac^\xd9\xb11$\x19T\x828\x88\xae\xb3\xe0\xaf\xf1[?K\xff\x00Nw\xe2\xa7\xf0\xeb\xfecG\x8bt\xabs\x87\xdc\xf98\xc0m\xeeVP\x16\x17m\x89\x07\x91\x99"\tCg0A\x91\xf8\xd7l?\r\x99\xce\xee\xfd}\xe6\xbf\xads\xcf\xe32\xc6\xf6\xccw\xf6\xbf\xfak\x8fK8\xe2\x8c\xb7\xb2\xe9\xdd:|\xa3\xc7\xff\x00N\xb5\xff\x00\x8e\xe8\xcf=i\xfc\xbf\xfd\x0f\xf5}[\xcc\xe9\xff\x00_\xfar\xed\xc2\xd2{Pb4\xe3_\xa4\xea\xe7\xfcO\x89\xd3\xc6\xf8z\xde\x8b\x9c>S|\x04\xe6\x84{\xcd|\x1f\xc4\xac\xb8\xe3_k\xf0\xde._\xa2\xd7\xb5WdW\xc5\xaf\xaf\x13\xd2k \xe0\xae\xfa\x88\x89U\t\xe3:q\xedt\x7fbs\x81\x8a\'N\xf6\\\xae\x9d/.y\xf8S\xf6\xe4y+\x7fp\xfb\xcdv\xaeg*z\x84G\xda\x8c\xfc(\x1b\n\x0c\x9c\xc6Y\xe7Q\x1e\xc9\xf4\xdb\xad\xf2\xa4\x92\x1c\xb6y\x9c\xb3\xcdh \x1f\t\xa6p\xcdGH\x93\xfe\x14l\x81w\xfa\xbb\xdfp\xd3\x108W\xear\'\x8f\x0f\xb5Y\x858\xa0\x90\xb3\xa0LH\xadxd\xe6\x94\x1a\xb9\xdeVP\x142\xef\x04|j\x9eHH\x91\x97\x10>\x14}\xd5 :R\xbe\x82\x04\x90\x85\x92FYD\xe7V\xc4\x01\xcf\xd6Q:\xee\xf1\xac\xe4\xa3\xb6\xfa\x11LtG\xb2@\xff\x00\xee\xe6\x8f\xacMb\xc2\xf6k\x19\xd6\x1a\x84I;\xc9\xf1\xa6yTc]\x99s.\xdbbW\xc3l\xb1\xc6\xd9+\xea\xd1z\xe0HM\xb2Ly\xa2A\xdd9\xe5\xad}\xbe\x87G\xa1zx\xdc\xfc\xeb\xff\x00\x95\xff\x00\xb7\xc9\xeb\xf5:\xd3\xa9f\x1e>\xdf\xfaj\x11u\x8d\xba{\x1f\x9c\xcf\xec\xd9P\xf7&\xba^\x9f\xc1O3\x1f\xf9\x9f\xde\xb1\xdd\xf1w\x99r\xfeoG\xb3\xe9\xc4Yi\xe7q<?\x11\xc4E\xc2!\xa6V.\xc1eI_\x9cKc-\xeeYH\x8e\x06\xbc}|\xfe\x1a\xe5\xdb\xd2\x98\xcdz\xfeM]\xcf\xaf\xb7\xbb\xd5\xd1\xe9|D\x9d\xddKn\xfd?7\x1a\xfb7N\xa2\xdf\xae_\x93\xecm\xe2\x99\x90\x10_j\xedK\x88\x1eq\x9dk\x8e=N9\xcb\x1f\xd2\xe1\xff\x00N\xb9t\xb9\xe3\x1b\xff\x00\x17\xfe\xd5\x1a\xb6"\xcdF\x03\xf7c\xd2\x9f\xc2\xbe\x95\xf8\xcc\xbd\x9e\x19\xf0x{\xd4\xfd\x92\xc0Y\xc2\x9e}m:\xea\xcb\x90\x83\xbf\x19A\xee\xaf\x99\xf1}k\xd5\xd4\xb3\xc3\xe8\xfc/Ft\xf7g\xab\xdb\xb0\x98H\xce\xbeu\x8fv\xd2\x92k\'g\x03\xa7}\x08\xf4\x9a\x96\xdeG\xa6\x81\xbd\xd1\xe3\x112\x9cQ\xafkn\n\xe9\xd3\xf2\xc6jv\xdb\xf5V\xf5\xf3\x0f\xbe\xba\xfa\xb9\x083a\xb8\x11\x9a\x81 \xeb\xa5\x08\xc4\x0c\xfe\x02\x9fD\xc2\x9d"\t\x1c\xaa\xda H\x98\x00E[\xe1\x07t\x00\xb5z v\t\xc8wP\x91pq\xf3<\xe0\xe6}\xf5$\xf5\x0c\x8dH\xd2\x06\xf6\x82}\xb5\xaf\xaa$\r\xee\x14D\xc1\xddU\xa0\xf1\x9bk\xc8NFx\xeb\x14^\n3\xb1\xe5\t\x9f\xab5e\xb5\x1d\xc3\xd0\xd2wz(\xd9\x11\x11\xfek\xb7>\xb4\n4\x9e\xaa\xf9\xd3oh\xf3\xc1!E\xb4\x15\x04\x93\x13\x03J\xc5\x9a\xe4\xc0\x10o\x85\xc3a\xc6\xadz\xad\xe8QK\x8a\xde\x028\r\xd8\xaayI\xf5\xd0<\x860\xee"\xc6 \xe2l\xf0\xe6n\x1bQ*\xeb7\x1c\xc8\xce\x862&\xbc\xb6\xe3mu\xe6k\x94\xa4:\xea\xad\x18P\xb3t\\\xa8|\xa27\x94\x02cS\xa6\x84\xf3\xe1Y\xb7\x1fH\xd4\x97\xd6\x9d\xe5\x86CiAq\xdf\xa4P\xe9\x81\xdd1Gv\x9a\xec\xda@R\x88\xcd\n\xff\x00\xcc5w\xd3\xd9\x14r0\xe7\x94f\x10\x07z\xc5}{\xd6\xc7\xdd\xe0\xf9Y\x03k\x84]\xb4\xa5KR\n\xa4\x11\x9eS^|\xf3\x99xw\xc3\x0b#b\xdd\x9d\xc0\x00uK\xf5W\x1a\xe8/\x93?\xfc\x8b\x9e\xaa\xcf$\xa2\xd9\xff\x00\xe4\\\xf5U\xa4zm\x9f\xfeE\xcfUZ[y>\x98\x90\xa4\xf4}\xba\xe0)_\xe7\x16\x14\x12\xa1\x99\x1b\xab\x12=u\xac8\xacd\xa6l\xcf\xcd\x9a\xfb\xa4k\xdf]o\x87:r\x0f\xcd\x87\x89\xcf\xd0(\xb3H,\xe7\xc2\xa2=\xa2\x12\xeb\x8bJ\x80 4\xea\x87q\x08Q\x07.\xf1L\x1b\xd0\x038\xcb\x80\xa2 \xef?F\xf8Nh\xddT\x13\xca* a?\xa8\x9c\xa2g.]\xaa\x82_tkR\xdaV\x19l\x8b\xab\x87[p\xee\xa56\xb7\x0f\x08\x1cP\xd2\x96=\xa9\xadc7\xc2\xb7Q\x0cA\xdd\x89\x9ef\xb37\xe5\x15@u\x9d\x99\xdd\x9c\xa6\x99Q\xe8\xf3\x1d\xf0\x1e\xfa\xa8Ft\xfc\xb8\xfb\xbc\r\x19)\xb7s\xf4D7z,\xd9\x11\xff\x00d\xda\xff\x00t\x9a1\xbb\x8d^\x1e\x87\x16P\x16.%Z/\xb1\xe15Y\xb8\xa7\x94\x1716\xee_m\xa4/\xabq\xb5\x87\nB\xb3P\x1a\x8ag\x1c\xe8\'\x8b\xd4\x91\xe6\xfbj\xd2y\xa7\xb6u\xa5\xde\x8b\x83\x89\xe2A&\xe1\xcb\x854\x97\xd4\x90J\x94\x14\x13\x92\x84\x01\x11\x1c\xb2\xae\xddO\x88\xebg\x84\xc3\rc5\xaf\xd9\x96\xdf\xd6\xff\x00X1\xc3\twwo\xde\xb6*\xb2\xeb\x18m\x0f\xdd\xbc\xe1H\x85\x13\xf4\xb3\xd4\x89\xaf\x17\xfa{\xaek\xbf\xcd\x9e\x90VY\xb7\xb6A*Q\xdd\x1c\xc8H\x1e4\xe3\xd0\x93\xcf"\xf5m\xf1\xc0\xad\xb8\xdb\xed\xa5\xdbgw\x9aP\xc8\xa0\xc85\xbf\x95\'\x1ag\xba\xfb\xa9)\x156\xdf\xda\x99\xb6k_0R\x85\xa92\x81\xb6M\x08\xe1\x14\xaa\xafzr\xedljc\x85\xd3\'\xda\xaa\xa7\x17l\xd5#g\x9d\xb3z\xe8u\xae\x93lQ\x11>N;\xd4}\xc2\xa2`D\xcf\x1c\xa6\xa5|\rh\xe0j\xe1JQ\xec\x96\x9dG\xa5M\xa9#\xdfF4^Q\x91\xc3\xd1\xe9\xabd;\x9f\xd0\xbb\x1fT\xfb\x8d(\x1c*|\x86 \x8d\x7f\xb5D\t\xa1\x07\xce\x81\x03#5$\x9c)\xf6\xed\xaf\x1cq\xf0\xad\xc5[\\47x)m-)\xf4o\x11\xe8\xadK\xab\xc8\xd6\xd0\x93\xa4G\x01Y\x86\xb1\'\xb5\xaet\xd4"A\xea\x1d1\xd9\xec\x89\xef\x9a\xbdB%\xc1!\xe9\xfb<(\xb5ywoEI\xdd\xe8\xc7dG\xfd\x91i\xfd\xcah\xc7\xc3W\xcbo\xb4\x060\xe3\xf7\xd3\xef\xa5E9\x8a\xf4\x8d\x87`;Y\x88\xe1\xd7\x18v7r\xe5\xbb\x9b\x8a6\xa8mh\xde)\n\xcaV\x0e\x8a\x15\xdb\x1c2\xcb\x19\xa6s\xcac\x7f2[],a\xae&[\xd9\xdd\xaaX\xfb6\xad\x1f\xfdJ\xdf\xc8\xeaO1\x99\x967\xc0\xff\x00\xc2\x85\xa8\x02v_l\x06d~\xa0\x83\xff\x00\x1d\x13\xa5\x93]\xb9{\x1d\xfc(\xd9\x84\xa8\xaff\xf6\xb9!:\x93\x87\x0c\xbf\xa7O\xc9\xc8^<\xa2\xdc\xf4\xa5\x84<\xc2\xd2\xe6\x0b\xb5)lF\xfa\x8d\x8e\xe8H\xef;\xd9S:\x19\xca\xcf\xcc\xc7\xc4Z\x96l\xa2\xd6\xdd\r2\x08@\x12$\xc9\xcf:\xf3^n\xeb\xacR\x00\xf0\x9a\xc3\xab}df\xd1\xaf\xba)\x03\xce\x95h\x16h[eH\xe1V\x83\xc0\xf4\xd7\xda\xd8\xc7\x0f+\x86?\xb7\x1f\x1a\xb4*\x8f\xb1\x1f7\x06FS\xf0\xad2#d\x06\x00\x13\x9a\x8c\xe7\xaeUl\x9a2\x90\'1\x14\x86\x10=<*L\x80x\x1a5\xa8B\xb8\x12\xcb\xbft\xf1\xee\xa8#a\x19\xd9\xe8fO\xbe\xa99I\xc3 G\x03\xed\xa8\x93I\xc8\x8f\x03Hdg1\x9d\n\x9b\x96\xa3\xf0\xa7\xc2\xfb\x9d#\xaap\x11\n\xcb\xb5<\'\x95J!\\\x18qR\x0f\x98r\x9a2\xe5H\xef.\x8c2\xe8\xd7d\xff\x00\xf9E\xa7\xf7(\xa2x5\xb1\xdaC\x18p\xfd\xa2jQ\xcb{n\x84\xbf\xd2\x9e"\xda\xd2\x95\xa5\xcce\x96\x94\x92&Am\x00\xc8\xe5\xad{\xfa\x17\xfd\xb7,\xf1\x97\xad\x86\xfd\xe2\xcbN\xc9`\xac\xdb\xad\xc6\xac-\xd2\xfa\x08RT\x11\xa1\x04g\\g_;d\xb5\xef\xb8\xe17\xacg\xfc6[5\x83\xd9^aB\xf1V\xad\x17\x9eq\xe9V\xe02\x03\xaa\x8fuk\xe23\xb8\xf5;e\xf6\xfe\x8exu8\xe5&\xcf\tcr\xd1V\xf6\xb6iQK\x8a\x970\xd5]\xc4\xa8\xe4\x02`\x8fMf\xe7{\xaf?\xcfK=Y\xcci\xfa@\xc3\xd4\xd6\n\xa5\xa9\x0c\xa7}\x95\xb4T\xc6\x1a\xab@IR`\x10\xadx\xd7\xa3\xa1\x9f\x99\xfd\xf6\xf1\xf51\xdeR\xad\x93\x91\x8c\xf2\xaf\x03\xb6\xd4P\xd6\x87F\xf7\x0f\xfdM\xaf\xbb\xf1\xa8T\xa02\xa8\x16*\x05\x8a\x93"\xad\r\xbc\'Lh+\xd8\xab\xae0\xe3\'\xfa\xd4\xd5\x97\x85/*&\xc4\xc3 \x1e\x04\x8fuB\x8a\xd9\x1dOv\xf9\xf4eQ\x08\x1a\xaa\x1a\xd5\x01\xe7V\x92\xb2\x88m\xc5\x83\xde\x94\x15\x01\xe9\x88\xa7\x19\xbf"\x82\x95L\x1f\x85\x1a:%\xccn:\x01%!&\x0cD\x88\xd6\xa1j.\x17\xfa\x99\x00F\xbe\xf1TR\xa6\x1ey\xd0Rp\xfbt\xdd\\8\x85\xa8\xa4&\xd9\xf7\x84\x0e(mK\x03\xd6\x9a\xd4\x9b\x16\xe9\x14\x19"g\xddAb\xa3\xadPI\xc8\x1c\x89\xcaG}^\x80\xef\xe2\xd7\xcb/}I\x06\xec\xf6\xd7\xc3\xb0}\xd5_u/.\xf7\xe8\xd0GG;*9a6\x9f\xdc\xa6\x89\xe1T\xed\xa6\xfdA\xbf\xda\xa7\xdciQ\xcb\xf8\xeb\x8bWK\xd7A\xb9\x9f\xf2\x85\xb4\x9d\xd9\x98\tO.\x15\xec\xe9k\xe5\xb3\x7f{\x8f\xde.\x95u\xeb\xb6ZP\xa2\x95\x1c\xe5@\x90 \x82}\x80\xd7\x8e[\xdd\x1e\xdc\xa4j\xf0\x17\xc8\xc1\xd9`\xdd\xba\xa7n\x97r\xeb%A!IIZ\xa1)\x81\x10\x91\xa4\xfaf\xba\xfcF7\xbe\xfe\x8e\x1d;$\x17\x0f\xb7d\xe1\x98k8\x8b\x8e\\\x8bvT\xda\xee\\`\xb8\xe1\x83\xe7v["Lf;>\x9a\xd6;\xdd\xb1\xbb\xb9\x8bQ\xb5\x0f[\xa1\x17\xb6\xb6\x81\xbe\xa1%\x9d\xc2Y\xea\xd4w\x94\x80A\xc8{\xab\xd7\xd3\x97\xb3\xba\xbc\xd9[r\xd2\xe2^N/\xc4\xd7\xceiD$\xd5\xa6\xdb\xec2<\x89\xbf\x03\xef\xa5%\x8e\x15h\x17\xc2\xa0E\x05\x98\xdd^\xeey\xe53V\x96\xce9R-x\xbe\x96S\xbd\xb1\x97\xb2@\x03\xaa9\xe9\xfadQ\x94\xe0O*\x06\xd3\xf4fx)B\xb3#B7\xfa#\xfbO\x85^\x141)$\x88\x8d&\x89\xc8\x16\xd5\xce\xa9\xd5(\xc8\x96\x9cD\xfd\xe4\x11\xf1\xadcV\xb6\x024H\xf4P|\x18\xeeM.>\xa9\xf7U\xe4#\xe1YY\x9c\xf8\x9fx\xa9N<\'\xa5\x1fK\xe8\x82\x07\x8d\x1c\x91\xac\x9e6\xf7.((\xa2Yy\xac\x8e\xa1HRH\xf6\xc5jQ\xe5\x14r\xcbJ\xcc4\x89\xd4r\xd6\x95\xa1\x00=R\xf2\x84\x92"\xaa\xb4\xd7^\xab7f\'\xab:\xf8UC\xbe\xba:V\xefG\xdb.7W\xff\x005Z\xfd\x1f\xf5I\xac\xcc\x8e\x92\xf6\x91`\xd9\xb4!@\xf5\xa3Q\xdci\x97kNW\xc7\x9fm\x8e\x95\xaf\xee\x9cp%\xb6v\x84\xb8\xe1\x070\x80\x06g\xbb*\xf6\xf4\xa6\xfazgruq\xb5n\xdamN\x05\xbc\x80q[U\x15\x10\x02z\xdc\xd5\'A^o\x93\x9e\xfc=\x99e\x8d\xf1c\xc9\xe1\x1bkii\x87\xb1\x86:\xff\x00\xf9\xc7\xca\x17j\x85\xf9"\xc2\x03\x8bR\x8a\x12D\xe7\x00\x89\xcc\x03\x9cW\xaf\xa9\xd3\xee\xce\xda\xe1\x86\xb1\x9az\xec\x16\xf1Ij\xdd\x17,\xf9E\xcbaM/\xa9p[\xa5N%FBJ\xddI\x1a\x18\x04\x1c\xb8\xe4g\x97e\x9bt\xcb\x98\xd3\xede\xc0{\x1bXS+mKv\xc5\x1d[\x8f\x07H%\xd4\xfd T\x0f\xaf\xba\xbdXc\xae\x96\xfe\xef\x1d\xcaw\xd9\xf4]\x0e\x1f\x95^\x7fH\xfb\xeb\xe6\xba(\x94wV\x9aop\xcf\xd4\x9b\xf4\xfb\xea\xd0\xda`\x14\x83\x87\x8dH\xec\xaa\xd04\x91:M"\xd7\x8e\xe9hN\xc3b\xb04e*\xf5:\x83F\\\xc5<\xb9\xfe\xd7E@3\xbek\x9c\xbbn\x9c\xda\xfeI@ps\x9e\xb2*\xa8\xd1\x91\x914\xc8\x0b\x90\x11\x14kI\x80I\xcef\xa4\x1b\xc9\x1dJ\xf9\xee\x99\xf5T\xb4\x8d\x85\x90m\x8er\x0c\xfb\xc5_u\xa4\xfd\x12\xa1\xc3\x8dK\x93c>3U\xf2a\xba\x1c\xa7\xd3H\'\x84\xe4h\xd28\x91\xd4\xaf#\xbd\xbc$\xf0\xf5Q\xb2\xd6_IS\xa9L\x02P@\xf5V\x83\xaf\xb6;\xa6~\x8f\xf0\xed\x90\xc0\xac\xae\xf6\x81\x08\xba\xb7\xb0a\x97Z\x16\xaf\xa8\xa1Im \x83\xba\x83\xa1\x06\xb9\\\xa4\xf2\xd7mz\x0b\x1e\x90vgmC\x96\xfb5\x89*\xed\xebE!\xd7\x90\xabgY\xddB\xa5 \xf6\xd2\x99\xcf\x95k\x1b\xbe`\xb3\\W>\\\xdf6\xdfH\xfbN\xa7\xd3\xbc\xd1\xc4n}0\xa1\xdd\xdd^\xfe\x978\xe9\xd3\xa3\x94\x99\xdd\xfb\r\x89\xb7k~\xb6\x16\xc2\x8am\x14\xc8[\xe9\xddL\xa0\xa5\xc0\x81\xbb\xdf\x98=\xd1M\x96\xeaZ\xf4\xdce\xb6\xc0\xac\xac\xf0+\x9cA\n{i]\xb3\xc4\x14\xfc\xa6\xc7\xa9\x1dfK\x94\x8d\xf1\x90\x90\x01\x1a\xc5t\xba\xbcW\x97s\xbd\xedC\xce\xdf\x9b\xa7p\xe4\xd9:\xfb\xce\x94(8-\xc4\xa2\x0c\xab\xe5L\x12Lf \x8f\t\xaf62\xf7]\xef\xf9\xbd]K$\x88\xeb\xb5~\xd3\x14\xc1\x99\xbbd2\xa7\xf1\x0b\x14\xa1!M((u\xd9\x90[%<+\xd7\x8e[\xe8\xd9\xed\xbf\x7f\xee\xf9\xbdY\'W~\xf1\xd0\x8a2\xb5\x1f\xb4k\xe6\xba(\x90\xa1\xc4\xd6\x9a\xad\xe6\x16\xb4\xf9\x1a`\xfd#P\xa9}jj\x0c\xeb\x87u[\x1a5W\x00\x03\xc2\xad\xad\x06n\x84\xf9\xc2\xad\xe9i\xe6zI\xdd\xb9\xd8Lx\xef\x90Qf\xa3\x11\xafi\'\xe1Y\xb7fM9\xf2\xd8\xe4\xaf\x13X\x9a\xbc\x1a"\x0f\xc9\xb9\xa9;\xe3\xdcjP,\xa7*F\xd2,\x19\xf2\x9b\x94\xb4V\x11(q[\xdfu\nTzwc\xd3L\xe7\x85x\x01\xb5J\x12y\x80t\x8a*\x9c\xb2\xe0\x00\x1c\tV\xf2 \x80b\'-j\xf2Qp\xc3\xf3UD\xea~\x15}D\xfa%\xcf\x88\xee\xa0\x8dj\xcf\\\x9b\xa3\xbe\x12Y\xb7[\xe2G\x9cRR7|s>\xaa\xd6\xb6\x00\x98X\x04\xc0\xe6\x06\x94i\x1aL8`\xef\'{#\xa4\x8a\xb4\x84\x91\xe4\xee\x00>\x92F\x7f\xce\xa3\\\x9d5w\xc4\x82\xfcL\x84\x1fuhWkl[hcdp\r\xd6\x1b\x07\xf3m\xb1*\t\x19\x9e\xa99\xccW\x82\xe37k\xd33\xe277\x0e\xf5\x85\x1d\x93\xd9<F\xa2\xbbt&\xadc\xab\x96\xe4R\x9bY\xd1s\x8c\'h\xf6\x9d[J\xeb-\x07\x9d\xbd[,X\x02\xe0\x0bX;\xa1E\xd1\xccx\xd7\xbb\x0c\xf2\x96H\xf3\xd9/\x97\x83\xf2[m\xe2\xbf\xcfx\xa6\xf92U\xf9\xb5\x99\'\xbf\xe5\xb3\xae\xdb\xcf\xe8{\xaf\x9d\x980\xdbN\xb8:1;\xb58 \x85/\ro\xff\x00\xddO\xe6\xf6\x8c\xfa\xecqb\xda\x7fG\x88\xb9<\xce\x1c\x90g\xff\x00:\xbaN\xaex\xfb,\xa7w\xaa\xc0\xe8\xc7b\xef1G\xecq\x94cL\xa6\xd2\xd3\x12C\x8e[*\xc3uN\xa9\xa2\x14!Ad\rh\xea\xfcNYN\xdc\x9c\xb1\xe8\xe3\x8d\xb6:\x01J\x83\xe3^\x1b^\x856\x92\xcacu\xa4\x0fE]\xce\x9d\xa7\x8b\x88\x10\x91\x1e\x02\x8b\x92\xed4\xdc+,\xeb=\xd5v\x90\xbc\xa3\xa5V\xadC\x16\xe2\xa3X\xa1\x18\x17\'\xce\xa8i\xae\xdb\x14\x176\'h\x04(\x83b\xe9\xf3O\x014wH\xb5\\\xfe\xc9\xf3\xabX\xc1OO\x98\xe7\xdf\x1f\x1a\x81\x89\x12@\xcb=&\x94%\xba\xb7_o\xb4\x13\x92\xbbD\xfd\x93L\xe4\x02\xd9\x80\x07w\n\x13\x1c2\x85\re&=U}J6\x16G\x91\x9f\x13\xc7\xc2\x9b\xe4&\xc7`\xaaF\\*\'5\xab\xe0\xa9)=R\x80\x9e\'\x97\xef\xca\xa8\x02\x9c\xcf\x87:\x11\xa0\xf6\xb4\x14\xdf\n\x08\t\x16\xaa\xfb\xc9\xd7\xc0\xd4\x9a\xbcD\x90\x8b\x93\x96M\x9fuUW{\xec\xd6\x1a\x0e\xca\xe0\x83tJl-\xd3\xeai"\xb9\xe5\xd2\x9b\xa7\x1c\xf8.#m\xe4\xe5\xbdaD\xd5\x86\x1d\xb4\xdc\xb6\xf2\x9d \x9d\xde\x8c\xb6\x9c\xf3\xb7\x03\xd6\xe2+\xbe\x1f\xb5\x18QVV,\xdc[%\xc5\xb8\xeaU\xbc\xb0\xad\xd2\x08\x00hb&\xbd!18C\x19\xc3\xcf\x0c\xe0N\xe9\xf8z\xa9\xd8:\xfb\x0fb\xd1\x82\xe2\\yj\xde\t\x1el\x03\xaey\x0fe\x12\xda\xd2\xe0\xe8PF\xc8\x03\xf5\xaf\x9e?\xd9\x15\xcb\xa9\xe5\x98\xb1\\^\xe9\x1e\x15\xc2\xbaEC\xe4jJe\xc7Yo\xef*\xb8|\xd8\xf4|\xba\x196i0\xab\xe6\xc9\xe4\x81?\x1a\xbee\xbe"\xec\x93\xcd\x15\xb42\xb8\r7z\xf9\xff\x00V\xd1#\xddGvK\xb7\x14\x96\xec^_\x9b\x86?\xe2\xea\xc2}\xe6\xb3r\xbe\xe7\xb6{\x0c\x9c&\xf5_\xe8\xd6L\xf7\xa9eDz\x85g\xbb~\xa7_D\x86\xb0w\xff\x00\x8c\xbdi\x1d\xcd3\x9f\xb4\xd1\xb8\xb5Qv\xaf\x07h\xecn\xd0o]\xdc\xad_\x9bn\x08\x12\x00\x90\xd9:\x01\xddT\xbc\x8b8r\xbbp\x1aFQ:\x835\xea\xc3\x97\x9e\xb0\x1e\xcb\x9fx\x1f}h\x1a\x08\x9c\xa2{\xa9Ge\xcb\xba\xa0\xc1\x12\x0cg9Q\xe8\x88\xe8\x1dZ\xbe\xe9\xf7R\x90\xf0\xb2<\x9c\xc8\x19\x93\xe9\xccQ\xb4\x9d9\x11\x94k\xad$\xd8\x13\xe3U\xf0\x08@\x11"=4-\x1a#\xc3\xc6\x9f\n\x1eT<\x99C9\xdf\x19\xfa\r\x1b\xe55\xb8\x89\xf9;\x99\xfeM_\xd9\xad\'\xd1l\x01\xa0\x8c\x0b\x0eD\x08M\xb3I\x8f\x04\ns\xbf\x9a\xb3\x8c\xfc\xb1\x07i\xc4\x0bX\xe6\xafp\xac\xb4\xaf\xfaEX\xfe\x0b\xb6\x8c\xa4\x83(BL\x19\xd5\xd4WL?j(\xa6\xb0\xa0U\x87\x84\x02\xb8V\xf8!9\x92\t\xf6\x1eF\xbb\xb1\x1b6\n\x89L\r\xceCB?x\xd3-iA\xe2\xb7\r"\xcd\xc6J\x90\xb7\x94@\xdc\x0b\x01I\x9c\xe631\x90\xaaNv\xd2\xd9\xe8e;\xbb\x13j\xa3\x03z\xe5\xf3\x99\xfbQ\xf0\xae]K\xc8\x91\xeeo\x16R\xe2@\x8f7\x8f\x89\xaf.~[\x8f\x02\xc6\x15\x856e\x16-(\xf3X*\xf7\x9a\xf2|\xcc\xbd\xde\xee\xc8\x9e\xd7P\xd0\x01\x96Z@\xfb)\x03\xddGu\xab\xb6AK\xeaQ\x8e\x15m08y\xc7x\x15l\x06\xa5\x93\xa95m\x1e\x93\xea\xa0Tly\x1df\xcd\xe3(\xfa\xd8}\xc8\xfe\xa9U\xa9\xe4_\x0e=aD\xdb\xb4~\x96\xe8\xafV>\xaf.G$\xc0{S\x98\xad2\x189\xe7\xaf\xb2\x94#\x00)\xf6\x92\xa9\xdd&\rH\xc4\xa8\xee\xe8f\xa2W\xa0o\x04\x93\x11\xcb=)\x08\xb8j\x8f\x92\xa8N[\xc7\xe1W\xaaJ\x04\xc1\xd4\xfc(SpVP\x95\x07\xf7\xd4S\xba\xd2\x96\x88\x1a\xa8\x11\x00\xfa\t\xaa \xc6n\x00t\x98\x9eB\xa3\xe4\xc0s:\x114\x88\'\xf1J\x81\x96\xf8\x1e\xc3F\xd3]}!\xab\xaf\xd9\x9fun3\xea\xfa=\x86\x8d\xdc>\xd9<\x9a@\xfe\x88\xa3?\xda\xab\x1f\x11\xaa\xda\x9dm\x7f\x9f\xf0\xa24\xac\xfaEi\xbb^\x8b1\xf7\n\xc0+, \x95\x10\x04u\xe8\x81]1\xe7(\x14Kx\x97V\x8d\xc6\xee\xdb\x08\xe5\xbc\x9e5\xe9\x92\xb3R\x11\x8a\xac\x88\xf2\xd6\xf3\xe4Q\xf8S\xdbF\xc5{\x10\x17*I~\xe9\xa7\x14\x9c\x81\x94\x8fuRi\xa5\xdb\xd1\x9e\x18\xc6+\xb0XKo8\xb2\xcf\\\xfb\x85( \xa5\xcf\x949\x1fV\xa3J\xe5\x96W\x1c\xb6\xce<\xacK\xb6\xaf\x96\xb4\x9b6\xd9Sa0K\x84\xcc\xc9\xff\x00\n\xf2\xe5/\xa3\xa4\xd7\xab\xc1\xa1g\xd9_9\xf4\xe8\x89_3H\x11*\x11S\'\xef@\xcf\xd5H\xa4\xde\x9c\xe9\xd0=\x07\x95@\xb7\x89\xeb0\xdb\xe4G\x9dj\xf2c\xc5\xb5S<\x8a\xe3+E\x13j\xc6\x7f@{\xab\xd7\x1el\x85F}fY\xe5\xa7\x8d<\xb2b@*\x19\xe4i\xda\x16\xd9a\xbb\xb6\x94N\xeaR\xa9\'\x952\x8f!7\x90H\x83\x95\x08\x8e\x1e\xc1\xe1\x97\xc2\x98\xb7\xb4l4\x9f\'P\x8e\'\xe1V\x92h\x19\x15O\x18\xa3h\xf6\x17\xba\x8b\x89"T\xc9H\xcb\\\xd3\xf8S\xea\x82\x9c\xc8\xd7\xd1R5*\x93\x94\xd0!\xe4\xc5\xb9\x9d7\xc4O\x85>\xa5\x02\xf0\xfc\x95\xc8\xfb$i\xa6U\xb9\xe63_IXN\xeb(O$\x81\xec\xacewm8\xf8\x8d&\xd4y\xd6\xbe\x0b\xff\x00\x86\xa8Z,5\xc4)\x85!iB\x90NiZB\x81\xf4\x1c\xabV\x04\xe4\xb7l\x7f\xd1\xad?\xdd\xd1\xf8S\xa0xf\xd7\xfe\xabi\xfe\xee\x8f\xc2\x94U1k\xff\x00U\xb4\xff\x00wG\xe1R\xd1l\x92\x84\xbc\x10\xdbhBD\xc2P\x90\x91\xea\x15_\n7\xf6C\xe4=&\xb1J\x9eaA`B\x8cx\xd7\xcc}T\xa4G\xa3\xbe\x96h\xc8\xef\xf5R\xc8\x84~\xe2\x99\x05*if\x8a\x93\x15h\x0e\x91\xbe\x87\x11\xf5\x9bZ}i"\x9d\n\xe2\x9b2<\x91\x90N\x89\x00\xd7\xa7\x17\x9f!\x87\xf1\xa7\xb8\x1fh\xad\xb2\x19\xef\x06\xa9\xe4\x16F\x91\xdfJ:\x12\x0f\x85\x1e\x88\xd5F\xe9\x02\x01\x8f\x851"a\x92m\xcc\xf7\xe5\xea\xa3z\xa97M4\xa6{\xa2\x11\x07J\x97,;\xb2s\xf8PM\x073\xdcr\xa6\xc1\x0e\xde\xf9\x08\xfa[\xf3\xec\xaa\xf9HWQ\xba\xf8\xcf<\xabx\xee\xd8\xc6~6\xfaP+\x9bq\xe7v\xac\xfc\xa5\xb0\xfb+\xff\x00\x86\x98\x9a\x9c\x1a\xdc\x1bi:\x92kI\xb3K\x02*\x07\x86\x05H\xe2\xc8\x8a\x90v\xa9\x02\xe0\xf8V\xaf\x80\xdfY\x8f\x9b\xa7\xd3\xef\xaeyy*a}\xa7C\xad\xa7u\xb7\x80t\x0eS\xa8\xf4\x19\x15\xf3p\xbd\xf2e\x1fW9\xdbn>\xc9l\xf2\xad\xe9\x8d\xa5&\x7f\xfe\xd3\xa6vti\xddN\x99\xd8\x89\x03.}\xf5\x01\x122\xa8%Zf\xfa\x01\xe2b\x90\xe2Kt\x94\xa0\xa0}\x15\x11\xed"\xbd8\xbc\xf4T\x8e\xd3\xbd\xe8\xf8\x8a\xd5\x01\xf1?\x0c\xea\xf4\x022\x99q\xb0\xa3\x91P\x07\xd7LF\xc7h\xeb\x00\xd1\xce\x89\xaa\x19+1\xa7\xae\x99\xb1b.\x10>lfu3\xec\xa2\x9f\t\xaa\xcf\x80\x9a\xa2c)\x0b+\x92rmJ\xc8q\x15\xaa\xc9\x93\xdec\x85\x04\xc1\xa9\x9dj\xe3C\xc9\xff\x00D\xf8\xf2\xaa\x94;\x82\x07Zb@ \xf1\xd2Ek\x1b\xccg)\xc5}(B\x82\xd2\x14\x92\nH\x90Eb\xb4\xf3\x9bV\xaf\x9c[\x8c\xbfF\xafx\xadO\t\x1b\x07\x1f4O\x89\xa86B\xa4"iDUI\x1e\xdf\xf5\x85\x9e\xea\xd5\x11\xbc\xb4\xca\xdd\x1e\x15\xca\xf9iQ\xb8\xa6\xee\x91\xe5L\x14\x96\xddH})I\x90\x8d\xec\x96\x9fB\x87\xa8\xd7\xca\xf8{&\xf1\xf4\xf3\xff\x00\xaf\xd2\xbe\xa6yw\xe3\x8es\xedNhG\n\xf58\x8e\x92\x07\xe3P<p5\x01\x13\xcb\x9dH\xf9\xd3\x85B\xa5Y\xe5t\xc7\xdfO\xbcT\x1cX\xfb}]\xfd\xdbzn\xbe\xea}N+\xf0\xafF/=8!"u\x1b\xc2\t\x9a\xde\x99\x00\x00bL\xf7N\x95z#\x9b -$\xf0P\x9c\xfb\xea\xda9\x13\xd6(\x89\x8c\xe0\xd5\xe8v\x12\x84\x03\xce\r1TL*z\x85x\xf1\xf4P-\xa9\xba\xf01TEh\x80U$\x89m@x\x91\xa5H2Ng\xbeM$\xc9\x1b\xdf\x8d\x01"\xd9\x92\xf3\xed6Nn/vu\x8c\xb5\xa5 \xdf\xb4Z\xba\xb9iA9,$\x94\xcck\xdfN\xfc3g\x0f\xa2\xb8\x1b\xfdv\x15lbJQ\xd5\xab\xc59|*\xbeV>\x1a\x8d\xaa \xde\xb5\xcc2}\xf44f\x12>h\x8aS`\x9a\x81\xe2\x94E\xe9J\x02\xdb7WU\x11\xbd\xb7\xc9\x86\xfe\xe8\xacV\x94\xa6\t\x81\xe3\x18\x1d\x8c\xe3X\xca\xb1;\x8cE\xa4\xba\x94\xa5\xa0\xd3l%9\x90\x94\x8dw\x81\x19\xf7W\x8aI\xbe&\x9e\xd9\xa95\x13\xd0x\x8a\xd2\x14\x11\xe8\xa8QS\xc3\x95@D\xe8hT@3\xa4\x0fk\x95\xcb\'\xed\xa7\xde*N5\xc6\xd3\xd4\xed\x16.\xd8>m\xed\xc7\xa3\xe5U^\x8cf\xdez\x02Vw\xd5\x07 \x92D\xd6\xb9\xd3!\x8d\xe0\x02\x88;\xa6`\xf8TH\x14&3\x1cj\x80\xbb\xc2D\xf0\xca\xaf+\xecE\xa8n\x1eziL(XQ\x1eL\xb8#%\x1e\x11\xca\x8b\x12f\xfac\xbc\xf3\xaa\x06o\x89\xd4U\xa5\xeaBF\xf6\xb5z5)\x92\x04\x9c\xb9kK\'\xb6V!i\x82\x12|b\x82\x88\xf3\x8b~\xedkZ\xb7\x96\xa7\x11$\xeb\xe7S4\xce\\\xc7|l\xbe"\x94\x8b\x9bu\xa8\xa7u\xdd\xe4\xe5"\x08\xcf\xddU\xbag\x1f\x07\xed\x0b\xa5\xcb\xa6\xca\x88\x90\xc8\x98\xe7&\x96\xe0\xb8_\xea\xa8\xa9\'\x03P8\x1aQ\xae\x1c\xa9@\xda\x9e\xda\xcdTF\xf5\x89\xea[\xd7\xcd\x15\x8a\xd2\x84\xc2\xf1\x9ca\xfcQ\xb5\xb5\xb2\x0cavE_(\xfe!\x88\x07_\xdc:\xee4\x89\t=\xc4\xc5p\xb5\xeb\x9e\xcd\xebr+\x14\x8e\x91\xdf\xe3T\x03 T\x86@\x11\x1c(B\'\xbb:\x83\xcf\xe3\x1bk\x81\xe1\x08\xbc&\xfd\x87\xef\xed$y\x1a\t\xdfS\x83D\xe9\x1a\xc4\xe7F\xe6\xf4\xdf\xcb\xcf[\xd3\x941\'\xdd\x7f\x1c\xc4\x1d\xb9HK\xef\\:\xeb\x81"\x00R\x94U\x90\xe5\x9eU\xe9\xc6\xcfG\x939e\xd51\x0b\x1db\x8e\x87t\xfb\xab@\xce\xb0\xf9\xb2bI\xf6T\t\xbd\x97x\xcef\x9e\x16\x8e\x90r\x91=\xf5z\x1f\xa1\x15\xa1\xf3}\xf4*\x85\x85\x91\xe4\xebH\x8f8\xf1\xf0\xab\xc2\xd2l\xaa;$\x0fN\xb5x\xf2\x08I\xe1\x07\xd3R=\xd6\xd6\xcb\x85.\x00\x95@>p:\x89\xa3\xc4!O\xa3=\x01\x02\xa8\x8b\xbcBs%):\xe7N\xd2+pn\x80\xe6\xfbc^j\xa7\xd4d\xed\x1c.\xe8\xa7\x11u\x06HZT"s$f#1\x9eU\x9c\xfc3\x87\x15\xb6}\xe2u^\xff\x00d\t\x19s\xe1V\x1e\x1b\xad\xc6\x1a\xbf\x9a\xb7\xe1[\t\xa1u\x03\xc2\xeaF8\xac\xa9AZ*B\xe9\xa27\xc9 %;\xc9\x9c\x84@\xee\xac\xe8\xa9\xd4\'J\xf3=\xa9H\x12$\x9a\x10\xa9<*\xd0\x199\x19\xa1\n\x93\x1e\x14&\x93m\xf1\xa70\r\x96\xbd\xc4-\xc4\xbe\x9d\xd6\x9bTN\xe2\x96wB\xa3\x8cL\xd5\xcd\xe25\x84\x97.T5\xb5\xf5\x8a|\xa3\xcb\xad\x97z\\l\xa5\x1b\xce\xad\xa2\xdb\x93!\xc9O\x9cgPr5\x9f\x95\x93\xd9l\xcb\xd5\xa0\xbe\xc3\xad\xae\x9cS\xab=\xb0\t\xdeAR\x15\xa4\xc4\x8aq\xc7\xa9<Q\x94\xe9\xe7?4xV\xaf\x9e\xdfq]z\xd2\x81;\xa9Q\xde\xe7\x02k\xd7~\xaf\x95d\xdd\xd3\xd24\xf5\x9b\xac\xa1Av\xe5gwx\x15\xc7\x0c\xeb\xa7\x0e7ab\xeai\xab\x12\xf5\xab\x88\x0e\x85\xa4y\xc1B\x0e\xb9Q\xae\x0c\xbe\xa8\x8d]!HN\xf1nr\xe03\xac\xfd\xcf;=\xbb\x9bu\x12\\S`D\x83\xdfL\x90n\xb1\xb5Y\xb0\x92\x19RwI\xccoS\xc2\x96\x8d\xd7Z\xe5\xdb\x13\xcfx\n$[\xafe\x87`{\x13u\x87\xd8\xbds\xb6\xe6\xce\xe9\xe6P\xbb\x8bw-\xc7\xc8\xac\xe4\xa4g\xacs\xe2+]\xb8\xaf\xcc\xf2x\xab6\x16\xb7\xf7\x8cY\xdd\xb5{n\xcb\xebm\xab\x84\r\xd4\xbc\x80`,\t\xcaFqY\xed\x86T\x15\xad\x9d\xe5nIH\xe2x\xd5\xa1)\x1ePi\xe2\x87\x1b(XHT\x13\x9c\x11 \xeb\xca\rMr\xf7=\x10\xd8a\xd7X\xcb\x8b\xbc\xb4n\xe5\xd4\x92P]\x1b\xc1\n\x02A\x00\xe5>4[\xe8\xc5^\xcd]\x16\x1di\xd9\xcd*\x06u\xe3U\x9b\x8ayzP\xb5\x06\xc9W\x9d\xc7\xc7\x8dg\xa7\xe1\xd3//C\x87+\xe6\xad\xe7\xc2\xb6\xcabUR\x11*\xa5\x1a\xea\xb2\xa6#,\xfc\xd5UDn\xb7\xd6\xa8,\xac\x84\xc4F\xe09\xd5\xa4\xa9\x1a\xcd"+\xc8\xf6\x8e\x83\x9et!:\xc0\x06f\xa4\xc5]\xb6\x8c\xd4\xa09\xd6R\x03\xf8\xfd\xb2\x1c\xea\xdbQq\xd3\xa2\x1b\x05J\xf5\n<y/)\xd2\xb5\xc6)\xfeF\x9e\xbe\xc1\xebk;\x9b\xa6\x9a+z\x02\xa4J\x93\t\xd72\x9e"\xbb|>3\xa9\x9e\xab\x9f[<\xbaRe\x14\xe1\xce>Qq\xf7Ez\xbf\xd3\xcfw\t\xf1\xd9{\x13t\x91\x1dq\x19\x10e\xb0~5_\x87\xfa\xb5\xfe\xbb/f\xba\xdb\x05e\x84\xee\xb7p\xa2\x00\xfaH\x1f\x8d7\xa2\xf3\xfc\xdd\xa4~nA\xc8\xa9\xa5}\xe6\xa8\xf9W\xdd|\xc8\x1b\x98C*$\x84Z\x85s\xea\xa0\xfb\xa9\x9d<\xbd\xd7\xcc\x94\xdf\xcdYD\xb1\xea?\x85_/%\xdf\x08\xac,\x9e\x16\xfe3\xfe\x14|\xbc\x8f|1XZ\x8c\xfc\x9b\x06u\xcf\xfc)\xf9y\x0e\xe8a\xc2N\x7f \xc1\xf0X\xab\xb3#\xb9NN\x14\x80 \xdb\xb6\x0fr\x85W\x1a\xbb\xa0\x0e\xe1R\xac\xad\xd1\xaf\xd6\x15vS\xdd\x03V\x14G\xfa8\x8e\xe5\x0f\xc6\x8e\xdb\xeb\x19\xee\x9e\x86\x8c(\x05\x93\xe4\xc7\xc6r\xf7\xd5\xdbZ\xef{\r\x86\x16\xd8u\xe2\x0b\xabE\xb0\x99R\x94\xbd\xdfmf\xe3}\x86\xfe\xab\x16\xf3\x13\xb0U\xbb\x89g\x17\xb6*\xdd;\xb1v5\xe1\xc6\xa9/\xb2\xf2\xb7n\xee-\xae\xecm1\x0bd\xb6\xdb\x17\x96\x8c\xdd\'p\xf6{i\x9c\xa8\x93\\:K\xb9\xb6\xca\xc9`[7\x1fTT\x92\xc3\x82\xa0"\x1c\x14\xa3\x1dX\xdd1J>\xc0\xf6\x0f\x8dU&\xb7r\xad\xd9\x0bL\x1e\'9\xa0*g1\x06Xl\x95\xad)\x81\xa91^{\x1e\xcd\xb5\xbf\xe5\x07\x958[\xc3-\xdf\xbdp\x1d\x18A_\xac\xe8=u\x9bd2Z\x9fm\x86m\x06!\x9b\xaa\xb6\xc3[<\x1cWZ\xe7\xfb)\xcb\xd6k\x17?f\xbb\x1b{=\x91\xb1J\x82\xf1\x0b\x8b\xbb\xf5\xf1\x0b_V\xdf\xfb)\xf8\x9a\xcd\xb6\xb51\x91\xe9,m\xad\xec\x9b\xdc\xb2\xb6f\xd9\x1c\x9a@L\xfax\xd6t^\x17\xa7\x94\xcfG\xbb\xe7=\xccB\xdd^\xbd\xe1\xf1\xafO\xc2~\xf1\xe5\xf8\xbf\xdd\xb9\xe6u\xe0"\xbe\x93\xe7\x14\x1f\x0f\x0eT\x89tp\'_\x8d\x06\x1c\x0epO\xb2\xa4t\xcf\x1f\n\xb4Xg\x85D\x84\x98\x9c\xc7\xa6\xa0BH\xa8\x10\x9c\x8dD\xc9\xce8\xd4u\xeaI\xf5\xd0vf\xb9\x8a\x845Yhc\x84T\xb6\x90\xd6\x1a\xe3\xb8{\x97n]Z2\x95Jm\x9b=\xb58\xb1\xae\xf4y\xa3\\\xf3\x88\xcf\xbf\x86}~\xdc\xb5#\xbe=\x1e\xe9\xdd\xb6\xb1\xc8\tY\xddI \x1d3\x1e\x83\xcb\xbe\xbb\xe3w%p\xb3WN\xab#\xf3/D8&7v\x10l,0;\'\x1cJ;K\x84\xb6\x99\x84\x98\x073\xccW\x9b9\xbc\xab\xbfN\xeb\x18\xf6\x168U\xea\xadZq\xb2\xce\xe3\x89\x0e\tp\xcc+>#\xbe\xb38\xe1\xae\xed\xf2\x960\xab\xeeM\x1f\xfb\xcav\x8e\x18]\xef\xd5G\xa1b\xae\xe4\x05\xdd\x8d\xdd\xbd\xbb\x8f\xba\x81\xd56\x92\xb5\x90\xa0`\x0c\xc9\x8afKO+\xb2\x18\xdd\x95\xd0\xb9\xc5[\xda?-\xc3\xafR|\x91\x0baL\xa5\x00\x13\x98\xde\x00\x93\xa8\x9e M\x17,g\x0b\x9a}\xb6(\xe2\x1a\tN\xf2\xe3\x8c\xcf\xb5"\x0f\x8dq\xef\xad\xf6\xc7\x9e\xb7\xd9\xfc1\x95%n0n\xdd\x99\xdf\xb9Q^~\x1a{+\x85\xce\xe4\xf6Ldo\xd8X-\x04 \x04$e\xb8\x91\x00z\x05e\xa4\x86\xcc\x1a\x82b\x15 T\x92\x1b4\'\x87\xe9\xc0\x05ti~~\xa5\xcd\xb2\xff\x00\xac\x03\xe3^\x8f\x85\xbf\xee\xcf\xd7\xfa<\xff\x00\x15?\xdb\xb5\xce\x13\xcf\xdf_Q\xf2\xfd\x0e\x1aiQ\xd1\xe3N4\x1dh\xe8\xce8x\xd5\xb5\x0e\x139MGLW\x85H\xd5P\xa9\x84\xf2\xe3HaV\xbd\xd5\x1d\xd3w\xa0\xe9\xfe5X\xa1\t\xcb*\t\xa7>\xf1P\xfb\x1aj \xba\x94\xab\xceJO\x88\xce\xaf"\xda\x0b\xf9\xb4\xe0\xd3\xb2}\xc6\x91\xe2:\x1b\xa4}\xace\x8f\xc9\xcdVO[-\xb5\xb9\x85ZZ!A`\x82\xa2\x11\xdd\xc8\x13^Kw\x95z0\xf1"\xdd\xd9\xfd\xa3f\xfd\xcb+T[8\xdfYn\x95%eiRd \x18\xe7\xa4\xe7\xddY\x97fp\xf4At\xa2\x85\xf1\x00\x93\xc8q\xa0\xbc>\xd5m\xe6\x1do\xb1\xf8\xc5\xd3\xcc]\xb4\x13f\xe9\x95\x04dJH\x1a+\x99\x15K\xce\x8c\xf2\xd2\xf4\'\x8b\xe1\xaete\xb1\xf8U\xd5\xba\xd6\xa5Z\x84\x02\xe3i[{\xd2\xae3"N\x99q\xa2\xd9\xbd3<=\xbb\xfb/\x86\xb8\xb0[7,$\x08\xdci\xd2\x12=\x04\x1a.\x11\xbd\xd79tw\xd2cx\x92\xd9\xc2\xb6\x99\xd6\xd8\xc4\x15\x08f\xf9P\x86\xae\x0f\x04\xb9\xc1\x0b<\xfc\xd5w\x1dy\xe7\xd2\xd78\xbd8u{\xb8\xbeV\xbaB\xd9Y\x0e%A@\xc1\x04i\\]S\x13\x04\x024\xa1$2\xbe\x06\xa4\x98\xca\x16\xac\xc2Ls9T\x9eG\xa6F\t\xe8\xc7\x1cQVh\x0c\xae\x00\xe4\xf2+\xb7\xc3\xfe\xf7\x17\x0f\x89\xfd\xd5s9\x1e\xff\x00\x1a\xfa\xaf\x95\xa3\xc2r\x102\xa1\xae\x04\t\xf1\xa3d\xe0\x90\x0esJ\xd1c\x9eT&NS\x99\xa8\x84\xb3\x94zj\x17\x98\x1a\x8c\x1dMh\x1aU\xacQ\xa4@}DgU0\xa0\xf2\xcf\xc2\x83\xb6\x03"\x8b\xc9\x84?\nF\x83sOeCH\xd7=\x86\x1dV\xe80\x82c\x9eT\xab\x1d7\x8atk\xf9\xdfd\xadp\xcb\xfd\xa2\xbbU\x9b\x8c2J\x05\x93;\xc9\x84\xa4\xa4\x05e\xa6\\+\xc3k\xd51\xe1\xeb\xb0\x9d\x99\xbe\xb2\xbe\xb1\xb8\xfc\xfe\x87\x11n\xe2T[\xfc\xdc\x84\x17\x12\x04n\xef\x05\xe5#\x88\x14\r=\x9f^)\xd9\xd1\xe9{9\x1a\x8a\xb6\xb4\xf0\x1bY\xb0W\x18\xd38\xa5\xbbX\xc5\xb5\xb5\x8d\xe8P\r*\xc9KSAZ\x80\xa0\xb0\x0ert\xac\xdb\xce\xda\x98\xa2`]\x1c\xe2\xb86\x03g\x86\xd8c\x18j\xd3j\xd0m\xb7Wd\xe2U \xc8Q\x01\xc8\x99\xaa\r-\x16C\x9dK}yB\x9e\xdd\x1b\xe5\x00\x84\x95Fq\xdd4\xad>m\xbdz\xd9J\x86JI\x99\x11\xaduai\xf4_\xd2\xeb\x98:Y\xc2\xb6\xa5\xc7np\x84\xc2\x19\xbc\x82\xb7\xac\xc7\x00\xae.6?\xdaH\xd2FU\xc7\xa9\xd3\xdf8\xbd=>\xb7\xa6N\x98\xc3\xedZ\xb9\xb4f\xe5\xab\x96.-\x9eHq\xa7XPZ\x1cI\xd1IP\xc8\x83^[\xb8\xf4&4\xcbM\x1f\x93F|\xcef\xa44\xd5\xa4\xf2}+\xb7\xd6tk\xb4i\xe5k\xbd\xeaZO\xc2\xbat8\xeab\xe3\xd7\xfd\xdds\tl\xefO}}W\xcc\x90\xe0\x8c\xb2\xe1\xa5\x06rp\xc8\xfe\xf9\xd0X\x06|\xeb[\xe1h\xe3\x90\x99\x81\xef\xa1SN\xa7\x9f\xbe\x94\x12\xb4\x1aT\x02)\xe1N\xc1\nr9\x1f][V\x1b\xc7I\xa2\xa2\x93\xc0\x1a\x1a\x8c\xe6EJ0\xf7\xebR1GL\xfdu\x00.RUn\xe8\xe6\x93V\xfdN\x9d\x9a\xab\x82\x86m\xd1\xc1-6\x9fR@\xaf\x9f\xb7\xb6D\xc6\xae\xfb"\r;\x1aHj\xe2|j\xd8\xd2[n\x93\xce\x8d\x9d\x0c\xa3)\xce\xa8R\xad\x89 \x01\x99\xadFj\xbf\xdaN\x9b\xb6\x17g\xf1gp\xdb\xccYo\xdc\xb3\x93\xa6\xcd\x85>\x84+\x8aJ\x93\x96\xf0\xe28V\xb5Wm\xf5pP$\x13\xcf\xdf]>\x8eg\xa5Pu?\xbf\n\x0cX\xbd\x15t\xa7\x8a\xec\x15\xe0\xb7!w\xd8\x03\xaa\xde~\xc1k\xf3\t\xfam+\xe8/\xfa*\xe3\xc0\x8cg\xd3\xee\xe5\xd7\x0e\xa7o\x1e\x9f\xe7\xf9\xaf\xe8\xeb\x9d\x96\xc7\xb0\x9d\xaa\xc1Z\xc5\xb0\x0b\xc4\xddY8wI\x88[K\xe2\xdb\x89\xd5*\x1c\x8e\xba\x82Fu\xe5\xcb\x1b\x8d\xd3\xd3.\xdb^\xac\xf0\xac\x96\xa7kp\xc7q}\x97\xc5\xb0\xc6\x94\x86\xdd\xbc\xb6[([\x93\xba\x95\x1d\t\x8c\xe3*\xde\x17\xb7)}\x98\xcf\x1e\xeclsV#\xb2\xf8\xd5\x8d\xc3\xad+\n\xbc\x7fp\x91\xd6\xb0\xc2\x94\x85w\x83\x03*\xf7\xe3\xd7\xc7/]<7\xa3\x94\xe1\xaf^\x1d\x88\xa0\xfc\xa6\x15\x89\'\xc6\xd5T\xce\xae7\x8d\xb3\xd9\x97\xb0+b\xe1\x1f\xa4\xb3\xbbO\xdea\x7f\x85k\xe6Ou\xd9BQ\xdd\x9d\xe4:<[W\xe1O|\xa3\xb2\xc3\x0b\xed\x82w\x95\x1e)#\xe1N\xc7i\xbeP\xcc\xfe\x95\x1e\xba\xa5]\xba4\xba\xd1\x07\xe5Q\xeb\x15mh\xde\xb1\xb2rq\x07\xf9\xc2\x9d\x8d3y\x04F\xfa\x7f\xda\x14mh\xd3\x13\xa8\xcf.umv\x90\xf0\xee\xef\xabgFq\xf6EI\x84\xd4\x08\xa3\x96S\xaf*\x8e\xcc#x$\x123RS\x9fy\x8a8\x89\xd7\xf7 \xf5\x91\xcb/ex\xa3\xd9\xb4\x8bv\x9c vLw\xd1\xb5\xa6\xc5\x86\xcau\xf5Q\xb3"[d\x81B\xd3Q\xb6\x1b[\x82\xecv\x17\xf9\xc3h\xef\xd1h\xc9\xc9\xb6\xfc\xe7_<\x9b@\xcdG\xbfA\xc4\x8a\xd4\x96\xf8NZ\xe9;\xa7,ok\xc3\xb8~\x0f\xd6`\xd8\x12\xe5%\xa6\xd7\xf2\xf7\t\xff\x00Z\xb1\xa0?Q9g\x04\x9a\xe98b\xe5\xaf\xd9U\ty)BD&#!\x11Gn\xd9\xbak\x81\xd4\x1a\xe9\xb6D\x07\x89\x99\xab\x80 \xe1\x94\xe7\xfb\xc5\x17\x92\xf4;\x0f\xb6\x18\xce\xc5c#\x12\xc0n\x83n\x10\x12\xeb+\x1b\xcd\\$}\x07\x11\xf4\x87~DND\x1a2\x93)\xcbXeq\xae\xc5\xe8\xc7\xa4\\\x1b\xa4\x0c5Na\xe4Z\xe2l\xa3~\xeb\x0eu`\xb8\xd0\xd0\xa9\'\xe9\xb7?Hi\x94\x81^l\xbaw\x17\xab\x1c\xa5\x9b\x9f\xe7\xf9\xfc\xff\x00\x94\xf6\x93\x95a\xa3w\x8f\xd6>\xba\xb4\x99\xbc~\xb1\xa3Kd&u\x8fH\xabH\xd5!\x07V\xd0|R)\xd0\rV\xb6\xca\xf3\xad\xed\xcf\x8bI?\n\x90+\xc2\xb0\xe5\xf9\xf8}\x92\xbcXG\xe1H\xd4\xf6\x01\xcd\x9f\xc1\x97\xe7\xe1\x18y\xf1\xb7G\xe1N\xef\xba\xed\xc7\xd9\x1d{)\xb3\xeb\xf3\xf0<0\xff\x00\xe1\xd3\xf8U\xdd\x97\xb8\xed\xc7\xd8\x076\'e\xd7\xe7`\x18f\x7f\xeaE=\xd9{\x8e\xcc}\x91\x97\xd1\xf6\xc9/]\x9f\xc3\xe7\xb9\x11\xf1\xab\xe6g\xee\xbe^\x1e\xc8\xcetm\xb1\xca\x19\xe0\x16\x83\xc3x|j\xf9\x99\xfb\x9f\x95\x87\xb22\xfa.\xd8\xe5i\x824<\x1cX\xf8\xd3\xf33\xf7\x1f+\x0f`W\xd1^\xc7\x9c\xbf5\x11\xe0\xfa\xc7\xc6\xaf\x9b\x9f\xb8\xbd,=\x80WD\xbb \xa8\xff\x007\xbc<.W\xf8\xd3\xf3s\xf7\x1f\'\x0fd\x9c/\xa2\xdd\x97\xb1\xbcf\xe1\x8b7\n\xdbPP\x0e\xba\\N\\\xc1\xc8\xd5\xf3s\xb3V\x8f\x95\x8c\xf0\xf7\xa6\xcd\xa4\x12R3\xe6s\xa7kB\x04@\x8a\tR59\x00\x04\x92r\x00s5%)\xd2\x7fO\xb8f\x00^\xc3v<3\x8bb\x89\x94\xae\xedY\xdb0~\xcc~\x90\xf8v{\xce\x95\xd2a\xbek9Y\x8f\x0e_\xda\x0c{\x13\xda,U\xdcK\x1c\xbe~\xfa\xf9\xdf9\xe7\x95&8\x04\x8d\x12\x9e\xe1\x95t\x93^\x1c\xeeW.kZVbI\xf1\xa83x\xf7eW\x03\x90\xa7<\xe9V\x08\x83R\x83 I\xe1\xeb\xab{\xa4\x873?\xb8\xa0&ax\x85\xe6\x15\x88\xdb\xdf\xe1\x97.\xda_[9\xbe\xd3\xed(\xa5m\x9e`\x8e\xec\xa3\x8e\x95qZ\xdd\x97q\xd5}\x10\xf4\xcfi\xb5~O\x83\xed)b\xc3hL!\xb7rC\x17\xa7\x84pC\x87\xea\xe8O\x9b\x13\xbb\\3\xe9\xeb\x98\xef\x86}\xde\'\xf9\xf4\xff\x007\xfd\xad\xe5\x12\x92A\x04\x10`\xcf:\xe4\xe9+\x02\xaaE\n\xa93z\x94Y\xa1\x15"H\x03S\x95I]\xe2=,`\xd6\x18\xb5\xe5\x8b\x98~"\xe8\xb6yL\x97\x99Se+)0H\x04\x83\x13"\xbaN\x9d\xd6\xc6\xe4\xf3Nk\xa5\xbd\x99\\u\x8db\xec\xfd\xebP\xaf\xec\xa8\xd5\xf2\xb2;\x9e\xe9mt\xa1\xb2\x0e\t8\x9b\xed~\xd6\xcd\xd1\xee\x06\x8f\x97\x97\xb2\xe3\xdd-\xae\x906E\xd3\t\xda\x1b\x14\xfd\xfd\xf4{\xd3Gf^\xcbOAcym\x88Y\xb5wap\xd5\xcd\xab\xa3y\xb7\x9aV\xf2V&2>\x8a\xca\xb3^G\x8a\x91\xa55\x06n\nQ\xc9M!$\x9c\xabL<\xd6\xddm\xae\x03\xb1\x18w\x95\xed\r\xe8ik\x04\xb3j\xdfi\xf7\xfe\xe29}\xa3\x03\xbe\x99-\xf0~\xb5\xc9\xfd(\xf4\xc7\x8fm\xb9v\xc9\x92p\xbc\x06`Y0\xbe\xd3\xa3\x9b\xab\xd5^\x19\'\xbb\x8du\xc7\x19\x1c\xb2\xcf\xd2+\x19"\x06U\xa6\t0*L9eBd\x8e4\x82Nd\n\x91RH\x19\xe9V\xc8\xc0\xe5\xa9\xc8\xd3\xb5\xe8p9\x899\x9e\\\xa8\xf2\xbc\x1e\x95r\x83\xc0\xf7\xd3\xa8|\x94\x84\xa90s\x07,\xfch\x0b\xef\xa2.\x9b\xdd\xc3\xc38.\xdc<\xbb\x8b\x10\x02\x18\xc53[\xacF[\xae\xf1Z>\xd7\x9c\x9f\xb44\xe5\x96\x1b\xf0\xed\x8fR^/\xf9\xfe{\xff\x00\xcf\xbb\xa4\x9a[o2\xd3\xcc:\xd3\xcc:\x80\xe3n\xb4\xa0\xb48\x82$)*\x19\x10y\x8a\xe1ev;:\x91\xc1&\x90p\x15\x14\x1d\xa1\xc4\xd3\x83`8\x8e$\xb8\xf9\xab\nq3\xc5Q\t\x1e\xb2*\x93|)\xe5\xce\x18\r\xba\\\xb2u\xdb\x96\xd0\xf2\xddp\x0e\xdaA\x93\xa9#\x91\x92k\xbeWWPNy\xa9\xea\xc3\xac\xdcR\xfein$\x9d\xd2\x04NYe#\xf7\xf1\xacn\x9e\xd8\x12\xb0\x9b.\xca|\x9c\x03\xbf\xafX\xa4\xc8\x8d5\xcbCOu\x1d\xb1\xe7\xb1f\x9b\xb6}]BJ\x10\x94\x95\x00T\xa5H\xe0s\xf8\x18\xae\xb3u\x9b9t\xbe\xc4Y\xf9\x06\xc6`v\xc4AE\x9bd\xe5\xc4\x8d\xe3\xef\xaf/\x9bkm\xe0\xa8RT\x89V\xd1\x1cR\x1ae\xc7\x9eq\r2\xdaw\xd6\xe3\x8a\tJ\x125$\x9c\x80\xad\x0f>\x14GI\xff\x00\x94%\x9d\x87]\x86\xec E\xe5\xd8\x94\xaf\x13u2\xd3|\xfa\xa4\x9f<\xfd\xa3\x97\x8dt\x98z\xd7<\xb2\x98\xf1\xe6\xb9\x9f\x17\xc4\xef\xb1\x8cE\xeb\xfcV\xed\xfb\xcb\xd7\x8e\xf3\x8f>\xbd\xe5+\xd7\xc3\xbbJ\xe8\xe5\x95\xb7\xca\x191\xca\x9d3HO/E\x0b\xcb5\xf4\xd3\xb2\xcc\xa2(L\x03.5\x06\x11\x9e\x82\xa2v\xa3\\\xb9\x11\xad^\x17\x92\x82f\x91\xb3\xc2\xb4\xe5O\x88}O&39\x1e&(\x9c\xf0\xb8\x85\n\x10g\xd1Z\x02\xcc\x80s\xcf\x89\x14iJ\xb1\xfa(\xe9W\x13\xd8G\xd1f\xea\x17\x88l\xfa\xd6K\xb6*T\x16\x899\xad\x95\x1f5\\J|\xd5q\x83\x98\xc6Xn:\xe1\x9e\xb8\xae\xb6\xd9\x9c\x7f\x0b\xda|\x19\xacW\x02\xbcE\xdd\x93\x87t\xa8d\xa6\xd7\xc5\x0bN\xa8P\xe4|D\x8c\xeb\xcf\x94\xb8\xde]\xe5\xdbl(,\x9a\x92\xb2\xe9\xdf\x17M\xae\xce\xd9aiX\x0e_?\xd6,O\xf1m\xe7\xedQ\x1e\xaa\xdfNn\xec^"\xa2\xb4\xc6\x1d\xb7\xb6C(i\x05)\xcc\x10H3\xce\xba\xdc7\xc8\xeeHV>T\x95\x85[\x94\xa9I\x03y+\x06\x0f8"\x08\xee5v\x1e\xe8\x8a\xde5z\x84\xc4\xb0\xa1\xa4)\xa1\x1e\xca{ \xee\xa8o)W\xf7Q\xb8\x84\xb9p\xb4\xa0\x86\xd3\xba\t$&c\x99\xa7\xc4[\xddu\xba\x1aK-\xa1\x94\x8e\xcbiJ\x00\xf0\x00|+\xc9\x1a,R\x19\x15\'\x8d\xe9\x0f\xa4m\x9d\xd8+\x7f\xf3\xc5\xcf]\x88)2\xd6\x1fnB\x9e_"~\xa2{\xcf\xa2kX\xe3r\x16\xccf\xeb\x93:L\xe9Oh6\xf5\xf2\xdd\xeb\xa2\xcf\tJ\xb7\x9a\xc3\xad\xc9\xea\xc7"\xb3\xaa\xd5\xder\xe4\x05w\xc7\t\x8b\x8e]Kx\x9cG\x83:\xc4\x8f\x01N\xdc\xf4Br\xee\xa50\xd5\x05!\x88\xcb\xdbBf\xbciL\xe74#\xa3\x94Gx\xa51YLw\xd0X\x0eC\xc6\xa4\xc1\x9e\xef}H\xa4\x91\x15ED\'1\xe1\xf0\xad\nT\x935\x1fA\x87\x9a=5C9=9\x8c\xfb\xfd\xd5\x9b\xe5=\xc7B\xf8\xe6%\x83t\x91\x827\x86^9n\xd6!x\xd5\xad\xdbi\x82\x87\x9b*\x8d\xd5$\xe4u\xc8\xea8\x11F\xb7\x8d\xdb\xa7J\xfem;eY(\x81^gsf\xa8\x80\xba\xc30\xfcII\x18\x8d\x8d\xa5\xde\xe8\x84\xf5\xec\xa5\xcd\xd1\xdd#*\xb5\xb0\x8c\xae\x8fvJ\xe1$\xbb\xb3\xf8|\xf3C[\x9e\xe8\xa2\xf1\xe0W\x9e\xc6\xfa8\xd96\x90\xa55\x84%\xb2>\xab\xce\x8fr\xaa\xbdL\xa7\x8a4\xab6\x93g\xf0\xcb%+\xc9\xad\xd4\x8e\x1f\xa5Y\xf7\x9a\xd6=\\\xbd\xcbE\xb3\xac6\xad\xab\xc2[)\x94yc9\x12~\xb8\xad\xf7[\x8d1\xd4\xce\xfe\x91^5\xcd\x1a5\xa9<7MX\xee%\xb3\xbd\x1d\xe2X\x86\x0bt\xab[\xd4$\x04\xba\x94\xa4\x94\xc9\x00\xc4\x83\x07=kX\xc9i\x9e-\xfa8r\xee\xe5\xfb\xc7\xdc\xb9\xbby\xc7\xee\x1e;\xce:\xea\x8a\x96\xb2Fd\x93\x99\xafC\xc7\xbb\x95\xdd\x05Z\xa4w|)\x04$\xefPJ<\xe3\xdcj\x88\x87\x8d@\x80\x9c\xeaE\x03\xb4iLI\xd7\xc6\x844\r\xe5e\xc6\xb5<\x1a\xff\xd9'

Let's write this to a file:=, not the 'wb' call to denote a binary writing of the file.

f = open('my_new_file_name.jpg','wb')
f.write(image_link.content)
16806
f.close()

Now we can display this file right here in the notebook as markdown using:

<img src="'my_new_file_name.jpg'>

Just write the above line in a new markdown cell and it will display the image we just downloaded!

Example Project - Working with Multiple Pages and Items

Let's show a more realistic example of scraping a full site. The website: http://books.toscrape.com/index.html is specifically designed for people to scrape it. Let's try to get the title of every book that has a 2 star rating and at the end just have a Python list with all their titles.

We will do the following:

  1. Figure out the URL structure to go through every page

  2. Scrap every page in the catalogue

  3. Figure out what tag/class represents the Star rating

  4. Filter by that star rating using an if statement

  5. Store the results to a list

We can see that the URL structure is the following:

http://books.toscrape.com/catalogue/page-1.html
base_url = 'http://books.toscrape.com/catalogue/page-{}.html'

We can then fill in the page number with .format()

res = requests.get(base_url.format('1'))

Now let's grab the products (books) from the get request result:

soup = bs4.BeautifulSoup(res.text,"lxml")
soup.select(".product_pod")
[<article class="product_pod"> <div class="image_container"> <a href="a-light-in-the-attic_1000/index.html"><img alt="A Light in the Attic" class="thumbnail" src="../media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg"/></a> </div> <p class="star-rating Three"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="a-light-in-the-attic_1000/index.html" title="A Light in the Attic">A Light in the ...</a></h3> <div class="product_price"> <p class="price_color">£51.77</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="tipping-the-velvet_999/index.html"><img alt="Tipping the Velvet" class="thumbnail" src="../media/cache/26/0c/260c6ae16bce31c8f8c95daddd9f4a1c.jpg"/></a> </div> <p class="star-rating One"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="tipping-the-velvet_999/index.html" title="Tipping the Velvet">Tipping the Velvet</a></h3> <div class="product_price"> <p class="price_color">£53.74</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="soumission_998/index.html"><img alt="Soumission" class="thumbnail" src="../media/cache/3e/ef/3eef99c9d9adef34639f510662022830.jpg"/></a> </div> <p class="star-rating One"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="soumission_998/index.html" title="Soumission">Soumission</a></h3> <div class="product_price"> <p class="price_color">£50.10</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="sharp-objects_997/index.html"><img alt="Sharp Objects" class="thumbnail" src="../media/cache/32/51/3251cf3a3412f53f339e42cac2134093.jpg"/></a> </div> <p class="star-rating Four"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="sharp-objects_997/index.html" title="Sharp Objects">Sharp Objects</a></h3> <div class="product_price"> <p class="price_color">£47.82</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="sapiens-a-brief-history-of-humankind_996/index.html"><img alt="Sapiens: A Brief History of Humankind" class="thumbnail" src="../media/cache/be/a5/bea5697f2534a2f86a3ef27b5a8c12a6.jpg"/></a> </div> <p class="star-rating Five"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="sapiens-a-brief-history-of-humankind_996/index.html" title="Sapiens: A Brief History of Humankind">Sapiens: A Brief History ...</a></h3> <div class="product_price"> <p class="price_color">£54.23</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="the-requiem-red_995/index.html"><img alt="The Requiem Red" class="thumbnail" src="../media/cache/68/33/68339b4c9bc034267e1da611ab3b34f8.jpg"/></a> </div> <p class="star-rating One"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="the-requiem-red_995/index.html" title="The Requiem Red">The Requiem Red</a></h3> <div class="product_price"> <p class="price_color">£22.65</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="the-dirty-little-secrets-of-getting-your-dream-job_994/index.html"><img alt="The Dirty Little Secrets of Getting Your Dream Job" class="thumbnail" src="../media/cache/92/27/92274a95b7c251fea59a2b8a78275ab4.jpg"/></a> </div> <p class="star-rating Four"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="the-dirty-little-secrets-of-getting-your-dream-job_994/index.html" title="The Dirty Little Secrets of Getting Your Dream Job">The Dirty Little Secrets ...</a></h3> <div class="product_price"> <p class="price_color">£33.34</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="the-coming-woman-a-novel-based-on-the-life-of-the-infamous-feminist-victoria-woodhull_993/index.html"><img alt="The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull" class="thumbnail" src="../media/cache/3d/54/3d54940e57e662c4dd1f3ff00c78cc64.jpg"/></a> </div> <p class="star-rating Three"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="the-coming-woman-a-novel-based-on-the-life-of-the-infamous-feminist-victoria-woodhull_993/index.html" title="The Coming Woman: A Novel Based on the Life of the Infamous Feminist, Victoria Woodhull">The Coming Woman: A ...</a></h3> <div class="product_price"> <p class="price_color">£17.93</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="the-boys-in-the-boat-nine-americans-and-their-epic-quest-for-gold-at-the-1936-berlin-olympics_992/index.html"><img alt="The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics" class="thumbnail" src="../media/cache/66/88/66883b91f6804b2323c8369331cb7dd1.jpg"/></a> </div> <p class="star-rating Four"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="the-boys-in-the-boat-nine-americans-and-their-epic-quest-for-gold-at-the-1936-berlin-olympics_992/index.html" title="The Boys in the Boat: Nine Americans and Their Epic Quest for Gold at the 1936 Berlin Olympics">The Boys in the ...</a></h3> <div class="product_price"> <p class="price_color">£22.60</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="the-black-maria_991/index.html"><img alt="The Black Maria" class="thumbnail" src="../media/cache/58/46/5846057e28022268153beff6d352b06c.jpg"/></a> </div> <p class="star-rating One"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="the-black-maria_991/index.html" title="The Black Maria">The Black Maria</a></h3> <div class="product_price"> <p class="price_color">£52.15</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="starving-hearts-triangular-trade-trilogy-1_990/index.html"><img alt="Starving Hearts (Triangular Trade Trilogy, #1)" class="thumbnail" src="../media/cache/be/f4/bef44da28c98f905a3ebec0b87be8530.jpg"/></a> </div> <p class="star-rating Two"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="starving-hearts-triangular-trade-trilogy-1_990/index.html" title="Starving Hearts (Triangular Trade Trilogy, #1)">Starving Hearts (Triangular Trade ...</a></h3> <div class="product_price"> <p class="price_color">£13.99</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="shakespeares-sonnets_989/index.html"><img alt="Shakespeare's Sonnets" class="thumbnail" src="../media/cache/10/48/1048f63d3b5061cd2f424d20b3f9b666.jpg"/></a> </div> <p class="star-rating Four"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="shakespeares-sonnets_989/index.html" title="Shakespeare's Sonnets">Shakespeare's Sonnets</a></h3> <div class="product_price"> <p class="price_color">£20.66</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="set-me-free_988/index.html"><img alt="Set Me Free" class="thumbnail" src="../media/cache/5b/88/5b88c52633f53cacf162c15f4f823153.jpg"/></a> </div> <p class="star-rating Five"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="set-me-free_988/index.html" title="Set Me Free">Set Me Free</a></h3> <div class="product_price"> <p class="price_color">£17.46</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="scott-pilgrims-precious-little-life-scott-pilgrim-1_987/index.html"><img alt="Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)" class="thumbnail" src="../media/cache/94/b1/94b1b8b244bce9677c2f29ccc890d4d2.jpg"/></a> </div> <p class="star-rating Five"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="scott-pilgrims-precious-little-life-scott-pilgrim-1_987/index.html" title="Scott Pilgrim's Precious Little Life (Scott Pilgrim #1)">Scott Pilgrim's Precious Little ...</a></h3> <div class="product_price"> <p class="price_color">£52.29</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="rip-it-up-and-start-again_986/index.html"><img alt="Rip it Up and Start Again" class="thumbnail" src="../media/cache/81/c4/81c4a973364e17d01f217e1188253d5e.jpg"/></a> </div> <p class="star-rating Five"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="rip-it-up-and-start-again_986/index.html" title="Rip it Up and Start Again">Rip it Up and ...</a></h3> <div class="product_price"> <p class="price_color">£35.02</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="our-band-could-be-your-life-scenes-from-the-american-indie-underground-1981-1991_985/index.html"><img alt="Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991" class="thumbnail" src="../media/cache/54/60/54607fe8945897cdcced0044103b10b6.jpg"/></a> </div> <p class="star-rating Three"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="our-band-could-be-your-life-scenes-from-the-american-indie-underground-1981-1991_985/index.html" title="Our Band Could Be Your Life: Scenes from the American Indie Underground, 1981-1991">Our Band Could Be ...</a></h3> <div class="product_price"> <p class="price_color">£57.25</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="olio_984/index.html"><img alt="Olio" class="thumbnail" src="../media/cache/55/33/553310a7162dfbc2c6d19a84da0df9e1.jpg"/></a> </div> <p class="star-rating One"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="olio_984/index.html" title="Olio">Olio</a></h3> <div class="product_price"> <p class="price_color">£23.88</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="mesaerion-the-best-science-fiction-stories-1800-1849_983/index.html"><img alt="Mesaerion: The Best Science Fiction Stories 1800-1849" class="thumbnail" src="../media/cache/09/a3/09a3aef48557576e1a85ba7efea8ecb7.jpg"/></a> </div> <p class="star-rating One"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="mesaerion-the-best-science-fiction-stories-1800-1849_983/index.html" title="Mesaerion: The Best Science Fiction Stories 1800-1849">Mesaerion: The Best Science ...</a></h3> <div class="product_price"> <p class="price_color">£37.59</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="libertarianism-for-beginners_982/index.html"><img alt="Libertarianism for Beginners" class="thumbnail" src="../media/cache/0b/bc/0bbcd0a6f4bcd81ccb1049a52736406e.jpg"/></a> </div> <p class="star-rating Two"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="libertarianism-for-beginners_982/index.html" title="Libertarianism for Beginners">Libertarianism for Beginners</a></h3> <div class="product_price"> <p class="price_color">£51.33</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>, <article class="product_pod"> <div class="image_container"> <a href="its-only-the-himalayas_981/index.html"><img alt="It's Only the Himalayas" class="thumbnail" src="../media/cache/27/a5/27a53d0bb95bdd88288eaf66c9230d7e.jpg"/></a> </div> <p class="star-rating Two"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p> <h3><a href="its-only-the-himalayas_981/index.html" title="It's Only the Himalayas">It's Only the Himalayas</a></h3> <div class="product_price"> <p class="price_color">£45.17</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div> </article>]

Now we can see that each book has the product_pod class. We can select any tag with this class, and then further reduce it by its rating.

products = soup.select(".product_pod")
example = products[0]
type(example)
bs4.element.Tag
example.attrs
{'class': ['product_pod']}

Now by inspecting the site we can see that the class we want is class='star-rating Two' , if you click on this in your browser, you'll notice it displays the space as a . , so that means we want to search for ".star-rating.Two"

list(example.children)
['\n', <div class="image_container"> <a href="a-light-in-the-attic_1000/index.html"><img alt="A Light in the Attic" class="thumbnail" src="../media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg"/></a> </div>, '\n', <p class="star-rating Three"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p>, '\n', <h3><a href="a-light-in-the-attic_1000/index.html" title="A Light in the Attic">A Light in the ...</a></h3>, '\n', <div class="product_price"> <p class="price_color">£51.77</p> <p class="instock availability"> <i class="icon-ok"></i> In stock </p> <form> <button class="btn btn-primary btn-block" data-loading-text="Adding..." type="submit">Add to basket</button> </form> </div>, '\n']
example.select('.star-rating.Three')
[<p class="star-rating Three"> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> <i class="icon-star"></i> </p>]

But we are looking for 2 stars, so it looks like we can just check to see if something was returned

example.select('.star-rating.Two')
[]

Alternatively, we can just quickly check the text string to see if "star-rating Two" is in it. Either approach is fine (there are also many other alternative approaches!)

Now let's see how we can get the title if we have a 2-star match:

example.select('a')
[<a href="a-light-in-the-attic_1000/index.html"><img alt="A Light in the Attic" class="thumbnail" src="../media/cache/2c/da/2cdad67c44b002e7ead0cc35693c0e8b.jpg"/></a>, <a href="a-light-in-the-attic_1000/index.html" title="A Light in the Attic">A Light in the ...</a>]
example.select('a')[1]
<a href="a-light-in-the-attic_1000/index.html" title="A Light in the Attic">A Light in the ...</a>
example.select('a')[1]['title']
'A Light in the Attic'

Okay, let's give it a shot by combining all the ideas we've talked about! (this should take about 20-60 seconds to complete running. Be aware a firwall may prevent this script from running. Also if you are getting a no response error, maybe try adding a sleep step with time.sleep(1).

two_star_titles = [] for n in range(1,51): scrape_url = base_url.format(n) res = requests.get(scrape_url) soup = bs4.BeautifulSoup(res.text,"lxml") books = soup.select(".product_pod") for book in books: if len(book.select('.star-rating.Two')) != 0: two_star_titles.append(book.select('a')[1]['title'])
two_star_titles
['Starving Hearts (Triangular Trade Trilogy, #1)', 'Libertarianism for Beginners', "It's Only the Himalayas", 'How Music Works', 'Maude (1883-1993):She Grew Up with the country', "You can't bury them all: Poems", 'Reasons to Stay Alive', 'Without Borders (Wanderlove #1)', 'Soul Reader', 'Security', 'Saga, Volume 5 (Saga (Collected Editions) #5)', 'Reskilling America: Learning to Labor in the Twenty-First Century', 'Political Suicide: Missteps, Peccadilloes, Bad Calls, Backroom Hijinx, Sordid Pasts, Rotten Breaks, and Just Plain Dumb Mistakes in the Annals of American Politics', 'Obsidian (Lux #1)', 'My Paris Kitchen: Recipes and Stories', 'Masks and Shadows', 'Lumberjanes, Vol. 2: Friendship to the Max (Lumberjanes #5-8)', 'Lumberjanes Vol. 3: A Terrible Plan (Lumberjanes #9-12)', 'Judo: Seven Steps to Black Belt (an Introductory Guide for Beginners)', 'I Hate Fairyland, Vol. 1: Madly Ever After (I Hate Fairyland (Compilations) #1-5)', 'Giant Days, Vol. 2 (Giant Days #5-8)', 'Everydata: The Misinformation Hidden in the Little Data You Consume Every Day', "Don't Be a Jerk: And Other Practical Advice from Dogen, Japan's Greatest Zen Master", 'Bossypants', 'Bitch Planet, Vol. 1: Extraordinary Machine (Bitch Planet (Collected Editions))', 'Avatar: The Last Airbender: Smoke and Shadow, Part 3 (Smoke and Shadow #3)', 'Tuesday Nights in 1980', 'The Psychopath Test: A Journey Through the Madness Industry', 'The Power of Now: A Guide to Spiritual Enlightenment', "The Omnivore's Dilemma: A Natural History of Four Meals", 'The Love and Lemons Cookbook: An Apple-to-Zucchini Celebration of Impromptu Cooking', 'The Girl on the Train', 'The Emerald Mystery', 'The Argonauts', 'Suddenly in Love (Lake Haven #1)', 'Soft Apocalypse', "So You've Been Publicly Shamed", 'Shoe Dog: A Memoir by the Creator of NIKE', 'Louisa: The Extraordinary Life of Mrs. Adams', 'Large Print Heart of the Pride', 'Grumbles', 'Chasing Heaven: What Dying Taught Me About Living', 'Becoming Wise: An Inquiry into the Mystery and Art of Living', 'Beauty Restored (Riley Family Legacy Novellas #3)', 'Batman: The Long Halloween (Batman)', "Ayumi's Violin", 'Wild Swans', "What's It Like in Space?: Stories from Astronauts Who've Been There", 'Until Friday Night (The Field Party #1)', 'Unbroken: A World War II Story of Survival, Resilience, and Redemption', 'Twenty Yawns', 'Through the Woods', 'This Is Where It Ends', 'The Year of Magical Thinking', 'The Last Mile (Amos Decker #2)', 'The Immortal Life of Henrietta Lacks', 'The Hidden Oracle (The Trials of Apollo #1)', 'The Guilty (Will Robie #4)', 'Red Hood/Arsenal, Vol. 1: Open for Business (Red Hood/Arsenal #1)', 'Once Was a Time', 'No Dream Is Too High: Life Lessons From a Man Who Walked on the Moon', 'Naruto (3-in-1 Edition), Vol. 14: Includes Vols. 40, 41 & 42 (Naruto: Omnibus #14)', 'More Than Music (Chasing the Dream #1)', 'Lowriders to the Center of the Earth (Lowriders in Space #2)', 'Eat Fat, Get Thin', 'Doctor Sleep (The Shining #2)', 'Crazy Love: Overwhelmed by a Relentless God', 'Carrie', 'Batman: Europa', 'Angels Walking (Angels Walking #1)', 'Adulthood Is a Myth: A "Sarah\'s Scribbles" Collection', 'A Study in Scarlet (Sherlock Holmes #1)', 'A Series of Catastrophes and Miracles: A True Story of Love, Science, and Cancer', "A People's History of the United States", 'My Kitchen Year: 136 Recipes That Saved My Life', 'The Lonely City: Adventures in the Art of Being Alone', 'The Dinner Party', 'Stars Above (The Lunar Chronicles #4.5)', 'Love, Lies and Spies', 'Troublemaker: Surviving Hollywood and Scientology', 'The Widow', 'Setting the World on Fire: The Brief, Astonishing Life of St. Catherine of Siena', 'Mothering Sunday', 'Lilac Girls', '10% Happier: How I Tamed the Voice in My Head, Reduced Stress Without Losing My Edge, and Found Self-Help That Actually Works', 'Underlying Notes', 'The Flowers Lied', 'Modern Day Fables', "Chernobyl 01:23:40: The Incredible True Story of the World's Worst Nuclear Disaster", '23 Degrees South: A Tropical Tale of Changing Whether...', 'When Breath Becomes Air', 'Vagabonding: An Uncommon Guide to the Art of Long-Term World Travel', 'The Martian (The Martian #1)', "Miller's Valley", "Love That Boy: What Two Presidents, Eight Road Trips, and My Son Taught Me About a Parent's Expectations", 'Left Behind (Left Behind #1)', 'Howl and Other Poems', "Heaven is for Real: A Little Boy's Astounding Story of His Trip to Heaven and Back", "Brazen: The Courage to Find the You That's Been Hiding", '32 Yolks', 'Wildlife of New York: A Five-Borough Coloring Book', 'Unreasonable Hope: Finding Faith in the God Who Brings Purpose to Your Pain', 'The Art Book', 'Steal Like an Artist: 10 Things Nobody Told You About Being Creative', 'Raymie Nightingale', 'Like Never Before (Walker Family #2)', 'How to Be a Domestic Goddess: Baking and the Art of Comfort Cooking', 'Finding God in the Ruins: How God Redeems Pain', 'Chronicles, Vol. 1', 'A Summer In Europe', 'The Rise and Fall of the Third Reich: A History of Nazi Germany', 'The Makings of a Fatherless Child', 'The Fellowship of the Ring (The Lord of the Rings #1)', "Tell the Wolves I'm Home", 'In the Woods (Dublin Murder Squad #1)', 'Give It Back', 'Why Save the Bankers?: And Other Essays on Our Economic and Political Crisis', 'The Raven King (The Raven Cycle #4)', 'The Expatriates', 'The 5th Wave (The 5th Wave #1)', 'Peak: Secrets from the New Science of Expertise', 'Logan Kade (Fallen Crest High #5.5)', "I Know Why the Caged Bird Sings (Maya Angelou's Autobiography #1)", 'Drama', "America's War for the Greater Middle East: A Military History", 'A Game of Thrones (A Song of Ice and Fire #1)', "The Pilgrim's Progress", 'The Hound of the Baskervilles (Sherlock Holmes #5)', "The Geography of Bliss: One Grump's Search for the Happiest Places in the World", 'The Demonists (Demonist #1)', 'The Demon Prince of Momochi House, Vol. 4 (The Demon Prince of Momochi House #4)', 'Misery', 'Far From True (Promise Falls Trilogy #2)', 'Confessions of a Shopaholic (Shopaholic #1)', 'Vegan Vegetarian Omnivore: Dinner for Everyone at the Table', 'Two Boys Kissing', 'Twilight (Twilight #1)', 'Twenties Girl', 'The Tipping Point: How Little Things Can Make a Big Difference', 'The Stand', 'The Picture of Dorian Gray', 'The Name of God is Mercy', "The Lover's Dictionary", 'The Last Painting of Sara de Vos', 'The Guns of August', 'The Girl Who Played with Fire (Millennium Trilogy #2)', 'The Da Vinci Code (Robert Langdon #2)', 'The Cat in the Hat (Beginner Books B-1)', 'The Book Thief', 'The Autobiography of Malcolm X', "Surely You're Joking, Mr. Feynman!: Adventures of a Curious Character", 'Soldier (Talon #3)', 'Shopaholic & Baby (Shopaholic #5)', 'Seven Days in the Art World', 'Rework', 'Packing for Mars: The Curious Science of Life in the Void', 'Orange Is the New Black', 'One for the Money (Stephanie Plum #1)', 'Midnight Riot (Peter Grant/ Rivers of London - books #1)', 'Me Talk Pretty One Day', 'Manuscript Found in Accra', 'Lust & Wonder', "Life, the Universe and Everything (Hitchhiker's Guide to the Galaxy #3)", 'Life After Life', 'I Am Malala: The Girl Who Stood Up for Education and Was Shot by the Taliban', 'House of Lost Worlds: Dinosaurs, Dynasties, and the Story of Life on Earth', 'Horrible Bear!', 'Holidays on Ice', 'Girl in the Blue Coat', 'Fruits Basket, Vol. 3 (Fruits Basket #3)', 'Cosmos', 'Civilization and Its Discontents', "Catastrophic Happiness: Finding Joy in Childhood's Messy Years", 'Career of Evil (Cormoran Strike #3)', 'Born to Run: A Hidden Tribe, Superathletes, and the Greatest Race the World Has Never Seen', "Best of My Love (Fool's Gold #20)", 'Beowulf', 'Awkward', 'And Then There Were None', 'A Storm of Swords (A Song of Ice and Fire #3)', 'The Suffragettes (Little Black Classics, #96)', 'Vampire Girl (Vampire Girl #1)', 'Three Wishes (River of Time: California #1)', 'The Wicked + The Divine, Vol. 1: The Faust Act (The Wicked + The Divine)', 'The Little Prince', 'The Last Girl (The Dominion Trilogy #1)', 'Taking Shots (Assassins #1)', 'Settling the Score (The Summer Games #1)', 'Rhythm, Chord & Malykhin', 'One Second (Seven #7)', "Old Records Never Die: One Man's Quest for His Vinyl and His Past", 'Of Mice and Men', 'My Perfect Mistake (Over the Top #1)', 'Meditations', 'Frankenstein', 'Emma']

** Excellent! You should now have the tools necessary to scrape any websites that interest you! Keep in mind, the more complex the website, the harder it will be to scrape. Always ask for permission! **