Hallo,
im Rahmen einer Projektarbeit muss ich ein Berechnungstool in Python erstellen.
Hierfür brauche ich Emissionsfaktoren von verschiedenen Materialien und das Ziel ist es diese Faktoren aus einer Datenbank automatisch rauszuziehen.
Ich habe eine Website gefunden die, meiner Meinung nach, gut dafür geeignet ist: https://www.climatiq.io/data/explorer?data_version=8.8
Ich habe versucht diese Seite zu scrapen, aber entweder kriege [ ] raus oder ich kriege die Tabelle raus aber nie einen genauen Emissionsfaktor dabei.
Mein Code:
import pycurl
from pandas import json_normalize
urllib3.contrib.pyopenssl.inject_into_urllib3()
http = urllib3.PoolManager(
cert_reqs='CERT_REQUIRED',
ca_certs=certifi.where()
)
import urllib3
urllib3.disable_warnings()
import requests
res = requests.get('https://www.climatiq.io/data/explorer?s ... y=REDACTED', verify=False)
print(res)
<200>
league_table = soup.find('table', class_ = 'activities-table')
for team in league_table.find_all('tbody'):
rows = team.find_all('tr')
scraper = pd.read_html("https://www.climatiq.io/data/emission-f ... dd4eded999")
for idx, table in enumerate(scraper):
print("**************************************************")
print(idx)
print(table)
Wie kann ich die Seite denn scrapen, dass ich am Ende eine gescheite Tabelle mit allen Emissionsfaktoren habe?
Ich vermute das der Dropdown Menü das Problem ist....?
Ich habe 0 Erfahrung in Python, und dieses Problem beschäftigt mich schon seit einer Woche...
Dankeschön
Web scraping - html
@Eminem21: ich glaube nicht, dass es so gut war, deinen API-Key hier öffentlich zu posten. Den solltest Du jetzt sperren.
Statt zu versuchen, irgendwelche HTML-Seiten zu parsen (was hier eh nicht funktioniert), benutze doch die zur Verfügung gestellte API: https://www.climatiq.io/docs
Statt zu versuchen, irgendwelche HTML-Seiten zu parsen (was hier eh nicht funktioniert), benutze doch die zur Verfügung gestellte API: https://www.climatiq.io/docs
Ach witzig, den CTO von denen kenne ich.
Die haben doch eine API, die sollte wesentlich einfacher zu benutzen sein, denn dazu ist sie ja da.
Nachtrag: ich habe den key mal entfernt, aber Sirius3 hat natuerlich recht, der ist jetzt kompromittiert.
Die haben doch eine API, die sollte wesentlich einfacher zu benutzen sein, denn dazu ist sie ja da.
Nachtrag: ich habe den key mal entfernt, aber Sirius3 hat natuerlich recht, der ist jetzt kompromittiert.
@__deets__ & @Sirius3
Danke für die Antwort
Ich habe es mit der API gemacht, und ich bekomme alle Informationen aus der Tabelle AUßER Emissionsfaktor.... Und denn brauche ich ja...![Sad :(](./images/smilies/icon_sad.gif)
Und ich weiß nicht was ich am Code ändern soll um des zu bekommen..
Danke für die Antwort
Ich habe es mit der API gemacht, und ich bekomme alle Informationen aus der Tabelle AUßER Emissionsfaktor.... Und denn brauche ich ja...
![Sad :(](./images/smilies/icon_sad.gif)
Und ich weiß nicht was ich am Code ändern soll um des zu bekommen..
Mein Code:
import urllib3
urllib3.disable_warnings()
MY_API_KEY="XXX"
url = "https://beta4.api.climatiq.io/search"
query="petrol passenger car medium"
data_version = "^3"
query_params = {
"data_version": data_version,
"region": "DE"
}
authorization_headers = {"Authorization": f"Bearer: {MY_API_KEY}"}
response = requests.get(url,verify = False, params=query_params, headers=authorization_headers).json()
print(response)
Ergebnis:
{'current_page': 1, 'last_page': 2, 'total_results': 25, 'results': [{'activity_id': 'passenger_vehicle-vehicle_type_bus-fuel_source_na-distance_na-engine_size_na', 'id': 'bb937415-ceb6-4cde-b465-3ff3285fffae', 'name': 'Average bus', 'category': 'Road Travel', 'sector': 'Transport', 'source': 'UBA', 'source_link': 'https://www.probas.umweltbundesamt.de/p ... 0ECD41B75B}', 'source_dataset': 'ProBas', 'uncertainty': None, 'year': 2020, 'year_released': 2020, 'region': 'DE', 'region_name': 'Germany', 'description': 'Emission intensity of average diesel bus. Upstream and fuel combustion LCA activity is included.', 'unit_type': 'PassengerOverDistance', 'unit': 'kg/passenger-km', 'source_lca_activity': 'upstream-fuel_combustion', 'data_quality_flags': [], 'access_type': 'public', 'supported_calculation_methods': ['ar4'], 'factor': None, 'factor_calculation_method': None, 'factor_calculation_origin': None, 'constituent_gases': {'co2e_total': None, 'co2e_other': None, 'co2': None, 'ch4': None, 'n2o': None}},
....
Mein Problem ist das bei CO2e_total immer "none" kommt
Danke
import urllib3
urllib3.disable_warnings()
MY_API_KEY="XXX"
url = "https://beta4.api.climatiq.io/search"
query="petrol passenger car medium"
data_version = "^3"
query_params = {
"data_version": data_version,
"region": "DE"
}
authorization_headers = {"Authorization": f"Bearer: {MY_API_KEY}"}
response = requests.get(url,verify = False, params=query_params, headers=authorization_headers).json()
print(response)
Ergebnis:
{'current_page': 1, 'last_page': 2, 'total_results': 25, 'results': [{'activity_id': 'passenger_vehicle-vehicle_type_bus-fuel_source_na-distance_na-engine_size_na', 'id': 'bb937415-ceb6-4cde-b465-3ff3285fffae', 'name': 'Average bus', 'category': 'Road Travel', 'sector': 'Transport', 'source': 'UBA', 'source_link': 'https://www.probas.umweltbundesamt.de/p ... 0ECD41B75B}', 'source_dataset': 'ProBas', 'uncertainty': None, 'year': 2020, 'year_released': 2020, 'region': 'DE', 'region_name': 'Germany', 'description': 'Emission intensity of average diesel bus. Upstream and fuel combustion LCA activity is included.', 'unit_type': 'PassengerOverDistance', 'unit': 'kg/passenger-km', 'source_lca_activity': 'upstream-fuel_combustion', 'data_quality_flags': [], 'access_type': 'public', 'supported_calculation_methods': ['ar4'], 'factor': None, 'factor_calculation_method': None, 'factor_calculation_origin': None, 'constituent_gases': {'co2e_total': None, 'co2e_other': None, 'co2': None, 'ch4': None, 'n2o': None}},
....
Mein Problem ist das bei CO2e_total immer "none" kommt
Danke
Warnungen sollte man nicht ignorieren, sondern deren Ursache beheben. Das gilt auch für verify=False. Ansonsten ist das ja eine Frage an den Support der Seite. Was ich auf die schnelle sehe, ist, dass Du Version 3 abfragst, obwohl Version 8 angeblich aktuell ist.