EnergyGuru_test_app / scraper.py
CoderHassan's picture
Update scraper.py
9d37e34 verified
# scraper.py
import requests
from bs4 import BeautifulSoup
def fetch_tariff_data(url):
try:
response = requests.get(url)
response.raise_for_status()
soup = BeautifulSoup(response.content, 'html.parser')
# Locate the table with tariff data
table = soup.find('table')
if not table:
print("Error: No table found on the page.")
return None
tariff_data = []
rows = table.find_all('tr')[1:] # Skip the header row
for row in rows:
cols = row.find_all('td')
if len(cols) >= 2:
particulars = cols[0].text.strip()
rate = parse_float(cols[-1].text.strip())
if "Units" in particulars:
limits = [parse_float(x) for x in particulars.split(' ')[1:]]
lower_limit = limits[0]
upper_limit = limits[1] if len(limits) > 1 else float('inf')
else:
lower_limit = 0
upper_limit = float('inf')
tariff_data.append({
'lower_limit': lower_limit,
'upper_limit': upper_limit,
'rate': rate
})
return tariff_data
except Exception as e:
print(f"Error fetching tariff data: {e}")
return None
def parse_float(value):
try:
return float(value.replace(',', '').replace('PKR', '').strip())
except ValueError:
return float('inf')