-
Notifications
You must be signed in to change notification settings - Fork 0
/
gdp_growth_rate.py
78 lines (54 loc) · 2.3 KB
/
gdp_growth_rate.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
from selenium import webdriver
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from bs4 import BeautifulSoup
# ------------------------------------------------------------------
# ------------------------------------------------------------------
# Extracted European Union GDP & GDP Growth Rate
# Website: https://tradingeconomics.com/european-union/gdp
# ------------------------------------------------------------------
# ------------------------------------------------------------------
# Preventing Window from opening
options = Options()
options.add_argument('--headless')
# Driver
path = "C:\Program Files (x86)\chromedriver.exe"
driver = webdriver.Chrome(path, options=options)
url = "https://tradingeconomics.com/european-union/gdp"
driver.get(url)
# Waiting for Page Load (Waits 10 second until the tag <tbody> is loaded)
wait = WebDriverWait(driver, 10)
wait.until(EC.presence_of_element_located((By.TAG_NAME, "tbody")))
# Page Source
page_source = driver.page_source
# Parse HTML with BeautifulSoup
doc = BeautifulSoup(page_source, "html.parser")
# ----------------------------------------
# GDP Growth Rate - Extracting
# ----------------------------------------
tbody = doc.tbody
trows = tbody.contents
# Data List
European_Union_GDP_dataset = []
# Below the <tr> object you are trying to call the find_all() method on is actually a NavigableString object, not a Tag object.
for tr in trows:
# check if the row is a tag object
if tr.name == 'tr':
columns = tr.find_all('td')
related, last, previous, unit, reference = columns[0], columns[1], columns[2], columns[3], columns[4]
# New Dictionary for each Record
record = {}
record["related"] = related.text.strip()
record["last"] = last.text.strip()
record["previous"] = previous.text.strip()
record["unit"] = unit.text.strip()
record["reference"] = reference.text.strip()
European_Union_GDP_dataset.append(record)
# The required data value was "GDP Growth Rate"
GDP_Growth_Rate = European_Union_GDP_dataset[4]
print(European_Union_GDP_dataset)
print()
print()
print(GDP_Growth_Rate)