0% found this document useful (0 votes)
31 views5 pages

Untitled 1

This document contains code snippets and output related to web scraping and API calls to retrieve weather and location data. The code makes requests to OpenWeatherMap API to get weather forecasts for Poitiers and Dakar, and to a ZIP code API to look up location information based on a French postal code. The outputs include weather details for the two cities and place name, country, and coordinates for the ZIP code lookup.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
31 views5 pages

Untitled 1

This document contains code snippets and output related to web scraping and API calls to retrieve weather and location data. The code makes requests to OpenWeatherMap API to get weather forecasts for Poitiers and Dakar, and to a ZIP code API to look up location information based on a French postal code. The outputs include weather details for the two cities and place name, country, and coordinates for the ZIP code lookup.
Copyright
© © All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as PDF, TXT or read online on Scribd
You are on page 1/ 5

Untitled1

July 15, 2023

[6]: import urllib3


import json
import pandas as pd
httpPool = urllib3.PoolManager()
res = httpPool.request("GET","http://httpbin.org/get")
# res est de type bytes, il faut le convertir
page = (res.data.decode("utf-8"))
page

[6]: '<html>\r\n<head><title>504 Gateway Time-


out</title></head>\r\n<body>\r\n<center><h1>504 Gateway Time-
out</h1></center>\r\n</body>\r\n</html>\r\n'

[6]: import json

import urllib3,urllib
import ssl
httpPool = urllib3.PoolManager()
res = httpPool.request("GET","https://httpbin.org/get")
# res est de type bytes, il faut le convertir
page = json.loads(res.data.decode("utf-8"))
val =page
#print (type(val))
#print (val)

cles=val.keys()
for cle in cles:
print (cle , " : ", val[cle])
hs = val[cle].keys()

for h in hs:
print(h ,":", val[cle][h])

args : {}
headers : {'Accept-Encoding': 'identity', 'Host': 'httpbin.org', 'User-Agent':
'python-urllib3/1.26.11', 'X-Amzn-Trace-Id':
'Root=1-64b01d9e-3379b9a657c4a1b55c074dfc'}
Accept-Encoding : identity

1
Host : httpbin.org
User-Agent : python-urllib3/1.26.11
X-Amzn-Trace-Id : Root=1-64b01d9e-3379b9a657c4a1b55c074dfc
origin : 41.82.212.194

---------------------------------------------------------------------------
AttributeError Traceback (most recent call last)
~\AppData\Local\Temp\ipykernel_10920\2095869959.py in <module>
14 for cle in cles:
15 print (cle , " : ", val[cle])
---> 16 hs = val[cle].keys()
17
18 for h in hs:

AttributeError: 'str' object has no attribute 'keys'

[1]: import requests


import datetime

# ClÃľ API OpenWeatherMap


api_key = "aa6cf46e18f9d828862421a30fe84b43"

# Ville pour laquelle on souhaite obtenir les prÃľvisions


ville = "Poitiers"

# URL de l'API avec les paramÃĺtres nÃľcessaires


url = f"http://api.openweathermap.org/data/2.5/weather?
,→q={ville}&units=metric&appid={api_key}"

# RÃľcupÃľration des donnÃľes mÃľtÃľo


response = requests.get(url)
data = response.json()

# RÃľcupÃľration de la date de demain


date_demain = datetime.datetime.now() + datetime.timedelta(days=1)
date_demain_str = date_demain.strftime("%Y-%m-%d")

# RÃľcupÃľration des informations mÃľtÃľo pour demain


temperature_min = data["main"]["temp_min"]
temperature_max = data["main"]["temp_max"]
humidite = data["main"]["humidity"]
description = data["weather"][0]["description"]
vitesse_vent = data["wind"]["speed"]
lever_soleil = datetime.datetime.fromtimestamp(data["sys"]["sunrise"]).
,→strftime("%Y-%m-%d %H:%M:%S")

2
coucher_soleil = datetime.datetime.fromtimestamp(data["sys"]["sunset"]).
,→strftime("%Y-%m-%d %H:%M:%S")

# Affichage des prÃľvisions pour demain


print(f"{ville}")
print(f"PrÃľvision pour le {date_demain_str}")
print(f"TempÃľratures de {temperature_min}ÂřC Ãă {temperature_max}ÂřC")
print(f"HumiditÃľ : {humidite}%")
print(f"Description : {description}")
print(f"Vitesse du vent : {vitesse_vent} km/h")
print(f"Lever du soleil : {lever_soleil}")
print(f"Coucher du soleil : {coucher_soleil}")

Poitiers
PrÃľvision pour le 2023-07-16
TempÃľratures de 20.23ÂřC Ãă 20.7ÂřC
HumiditÃľ : 55%
Description : broken clouds
Vitesse du vent : 4.63 km/h
Lever du soleil : 2023-07-15 04:19:50
Coucher du soleil : 2023-07-15 19:48:56

[2]: import requests


import datetime

# ClÃľ API OpenWeatherMap


api_key = "aa6cf46e18f9d828862421a30fe84b43"

# Ville pour laquelle on souhaite obtenir les prÃľvisions


ville = "Dakar"

# URL de l'API avec les paramÃĺtres nÃľcessaires


url = f"http://api.openweathermap.org/data/2.5/weather?
,→q={ville}&units=metric&appid={api_key}"

# RÃľcupÃľration des donnÃľes mÃľtÃľo


response = requests.get(url)
data = response.json()

# RÃľcupÃľration de la date de demain


date_demain = datetime.datetime.now() + datetime.timedelta(days=1)
date_demain_str = date_demain.strftime("%Y-%m-%d")

# RÃľcupÃľration des informations mÃľtÃľo pour demain


temperature_min = data["main"]["temp_min"]
temperature_max = data["main"]["temp_max"]
humidite = data["main"]["humidity"]

3
description = data["weather"][0]["description"]
vitesse_vent = data["wind"]["speed"]
lever_soleil = datetime.datetime.fromtimestamp(data["sys"]["sunrise"]).
,→strftime("%Y-%m-%d %H:%M:%S")

coucher_soleil = datetime.datetime.fromtimestamp(data["sys"]["sunset"]).
,→strftime("%Y-%m-%d %H:%M:%S")

# Affichage des prÃľvisions pour demain


print(f"{ville}")
print(f"PrÃľvision pour le {date_demain_str}")
print(f"TempÃľratures de {temperature_min}ÂřC Ãă {temperature_max}ÂřC")
print(f"HumiditÃľ : {humidite}%")
print(f"Description : {description}")
print(f"Vitesse du vent : {vitesse_vent} km/h")
print(f"Lever du soleil : {lever_soleil}")
print(f"Coucher du soleil : {coucher_soleil}")

Dakar
PrÃľvision pour le 2023-07-16
TempÃľratures de 28.49ÂřC Ãă 28.49ÂřC
HumiditÃľ : 80%
Description : broken clouds
Vitesse du vent : 5.79 km/h
Lever du soleil : 2023-07-15 06:47:59
Coucher du soleil : 2023-07-15 19:43:00

[3]: import requests


cp = input("Donner le code postal")
url = "https://api.zippopotam.us/FR/"+cp
req = requests.get(url)
print(req)
print(req.status_code)
print(req.headers)
if (req.status_code == 200):
print ("requete traitÃľ avec succÃĺs")
elif (req.status_code == 404):
print("Attention Page non trouvÃľe")

if (req.headers['Content-Type']=='application/json'):
rep = req.json()
print(rep)
cles = rep.keys()
print(cles)
print("Pays: ",rep['country'])
print ("Code Postale",rep['post code'] )
for place in rep['places']:
print("Ville", place['place name'])

4
print ("Longitude ", place['longitude'] )
print("Longitude ", place['latitude'])

Donner le code postal 17000


<Response [200]>
200
{'Date': 'Sat, 15 Jul 2023 02:16:43 GMT', 'Content-Type': 'application/json',
'Transfer-Encoding': 'chunked', 'Connection': 'keep-alive', 'x-cache': 'hit',
'charset': 'UTF-8', 'vary': 'Accept-Encoding', 'CF-Cache-Status': 'DYNAMIC',
'Report-To': '{"endpoints":[{"url":"https:\\/\\/a.nel.cloudflare.com\\/report\\/
v3?s=%2FVWZ6GlNlhcZ4PKmAZXbGed9mNBTCaFXampK8SnqasvG69RQXTIBO9oe88uzjM8j2sfstbiNd
tBnkgAQHz4%2FlZY160vgGAWyDQgsC6J7p95umvZSqKnsKgWh5k7wJJ%2BcpRV22g%3D%3D"}],"grou
p":"cf-nel","max_age":604800}', 'NEL': '{"success_fraction":0,"report_to":"cf-
nel","max_age":604800}', 'access-control-allow-origin': '*', 'Server':
'cloudflare', 'CF-RAY': '7e6e8143aadff5ca-DKR', 'Content-Encoding': 'br', 'alt-
svc': 'h3=":443"; ma=86400'}
requete traitÃľ avec succÃĺs
{'post code': '17000', 'country': 'France', 'country abbreviation': 'FR',
'places': [{'place name': 'La Rochelle', 'longitude': '-1.15', 'state': 'Poitou-
Charentes', 'state abbreviation': 'B7', 'latitude': '46.1667'}]}
dict_keys(['post code', 'country', 'country abbreviation', 'places'])
Pays: France
Code Postale 17000
Ville La Rochelle
Longitude -1.15
Longitude 46.1667

[ ]:

You might also like