Web Scraping with Python 🐍
What happens when you visit a website?
HTTP Request
HTML File
👨💻
HTML Basic Syntax
HTML Skeleton

Most Common HTML Elements

Most Common HTML Attributes

Beautiful Soup

Beautiful Soup will
parse the HTML for us !
Websites are a mess
Python Basics
Before we start, we'll need to download Anaconda


Strings

Anything inside double or single quotes is a string
Any text value that you use in a program needs to come into quotes, otherwise it will look for a variable name and will give you an error if it doesn't find it.

Numbers
Numbers can be either integers (whole numbers) or floats (numbers with a fractional part)

A number between quotes is a string not an integer or float
Variables
Variables are just a way programmers name values, like in math class!
Variables can be re-assigned



Boolean & Logic
Boolean values: True, False
If and Else condition
Logic Operations (or, and)
While and For loop
Lists
Python has a built-in List type for storing a collection of values.
Generally we don't know what we're collecting, so we start with an empty list to which we add values


Lists #2
To do something with each element of the list, we iterate over it.

(It does not matter how we name the first variable in the list, however it's important we get the second variable right as it is the one that contains a list)
Dictionaries
Another common built-in data structure is called a Dictionary
Dictionaries are used to store “key-value” information. Here, “War and Peace” is the key, and the description is the value. So it works like a real… dictionary! 📖

Functions
Pre-built functions: type(), str()...
Import functions from downloaded packages
pandas, numpy, matplotlib...
Defining your own with def()
Let's Get to Work!
Our Target
https://books.toscrape.com

Basic Code
import requests
from bs4 import BeautifulSoup
response = requests.get("https://books.toscrape.com/")
soup = BeautifulSoup(response.content, "html.parser")
Importing our Libraries
Generic way to use BeautifulSoup
Basic Code #2
soup.select("h3 p")
Finding an element h3
CSS Selectors
Finding all h3 elements
soup.find_all("h3")
soup.find("h3")
soup.find(class_="product_price")
Finding a product_price class
soup.select(".product_pod")
Time for Live Code!
10% Workshop
By simonpastor
10% Workshop
- 271