Cách tìm nạp dữ liệu thời tiết trực tiếp bằng Python
Tính đơn giản và khả năng thích ứng của Python đã giúp nó trở nên phổ biến trong suốt nhiều năm. Bạn có thể dễ dàng truy xuất dữ liệu hữu ích qua internet với Python. Sau đó, bạn có thể sử dụng dữ liệu đó để thúc đẩy một ứng dụng thực tế.
Tìm hiểu cách tìm dữ liệu thời tiết trong thời gian thực bằng cách sử dụng API và quét web. Bạn có thể sử dụng dữ liệu đã tìm nạp này để phát triển một ứng dụng thời tiết đơn giản.
Mục Lục
Nhận chi tiết thời tiết hiện tại của thành phố bằng cách sử dụng Web Scraping
Web cạo là quá trình trích xuất dữ liệu và nội dung từ một trang web. Tự động tìm nạp dữ liệu từ web mở ra rất nhiều trường hợp sử dụng. Nhưng hầu hết dữ liệu này ở định dạng HTML, bạn cần phải phân tích cú pháp và kiểm tra để trích xuất dữ liệu có liên quan.
Bạn có thể trích xuất dữ liệu thời tiết trực tiếp của bất kỳ thành phố nào bằng cách sử dụng tính năng quét web. Thư viện BeautifulSoup của Python là thư viện truy cập để lấy dữ liệu ra khỏi các tệp HTML và XML. Bạn cần cài đặt thư viện Python BeautifulSoup qua pip để bắt đầu quá trình cạo. Chạy lệnh sau trong terminal để cài đặt BeautifulSoup và yêu cầu thư viện:
pip install beautifulsoup4 requests
Sau khi bạn đã cài đặt các thư viện bắt buộc, hãy bắt đầu bằng cách nhập chúng vào mã của bạn:
Mã được sử dụng trong dự án này có sẵn trong kho lưu trữ GitHub và miễn phí cho bạn sử dụng theo giấy phép MIT.
from bs4 import BeautifulSoup
import requests
Tiếp theo, bạn cần cung cấp chi tiết tiêu đề để máy khách và máy chủ có thể chuyển thông tin bổ sung với một yêu cầu hoặc phản hồi HTTP:
headers = {
'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/58.0.3029.110 Safari/537.3'
}
Tạo một chức năng, find_weather ()để thực hiện một truy vấn với Google bằng cách sử dụng request.get () phương pháp. Bạn sẽ sử dụng URL tìm kiếm để biết thời tiết của thành phố, sau đó thu thập dữ liệu có ý nghĩa để lấy vị trí, nhiệt độ, thời gian và mô tả thời tiết. Sau đó, sử dụng BeautifulSoup để phân tích cú pháp HTML phản hồi nhận được:
def find_weather(city_name):
city_name = city_name.replace(" ", "+")try:
res = requests.get(
f'https://www.google.com/search?q={city_name}&oq={city_name}&aqs=chrome.0.35i39l2j0l4j46j69i60.6128j1j7&sourceid=chrome&ie=UTF-8', headers=headers)
print("Loading...")
soup = BeautifulSoup(res.text, 'html.parser')
location = soup.select('#wob_loc')[0].getText().strip()
time = soup.select('#wob_dts')[0].getText().strip()
info = soup.select('#wob_dc')[0].getText().strip()
temperature = soup.select('#wob_tm')[0].getText().strip()
print("Location: " + location)
print("Temperature: " + temperature + "°C")
print("Time: " + time)
print("Weather Description: " + info)
except:
print("Please enter a valid city name")
Để trích xuất các ID phần tử, hãy thực hiện tìm kiếm trên Google và kiểm tra trang trong trình duyệt của bạn bằng các công cụ web. Bạn cần kiểm tra phần tử để tìm ID của phần tử HTML mà bạn muốn trích xuất dữ liệu:
Tiếp theo, chuyển các ID này đến lựa chọn() phương pháp. Phương thức này chạy một bộ chọn CSS dựa trên tài liệu được phân tích cú pháp và trả về tất cả các phần tử phù hợp. Các getText () phương thức trích xuất văn bản từ phần tử HTML. Các dải () phương thức xóa mọi ký tự khoảng trắng ở đầu và cuối khỏi văn bản. Khi bạn đã trích xuất một giá trị sạch, bạn có thể lưu trữ nó trong một biến.
Cuối cùng, yêu cầu người dùng nhập một thành phố và chuyển nó đến find_weather hàm số:
city_name = input("Enter City Name: ")
city_name = city_name + " weather"
find_weather(city_name)
Bây giờ, khi bạn chạy mã, nó sẽ nhắc bạn nhập tên thành phố. Bạn phải nhập tên thành phố hợp lệ để nhận kết quả nếu không mã sẽ tạo ra một ngoại lệ.
Nhận chi tiết thời tiết hiện tại của thành phố bằng API OpenWeatherMap
OpenWeatherMap là một dịch vụ trực tuyến, thuộc sở hữu của OpenWeather Ltd. API của nó cung cấp dữ liệu thời tiết toàn cầu bao gồm thời tiết hiện tại, dự báo và dữ liệu trong quá khứ cho bất kỳ vị trí nào. Cấp miễn phí của API OpenWeatherMap cung cấp dữ liệu thời tiết hiện tại với giới hạn 60 cuộc gọi / phút. Bạn cần tạo tài khoản trên OpenWeatherMap để nhận khóa API của riêng mình.
Không đẩy mã có khóa API vào kho lưu trữ công khai vì bất kỳ ai có quyền truy cập vào tệp nguồn của bạn đều có thể nhìn thấy và lấy cắp khóa của bạn. Trong ứng dụng sản xuất, hãy cân nhắc chuyển dữ liệu khóa API sang tệp .env để tăng cường bảo mật.
Truy cập trang web của OpenWeatherMap và tạo một tài khoản miễn phí. Sau khi tạo tài khoản, bạn có thể tìm thấy các khóa API của mình trên Khóa API của tôi trang. Bạn có thể sử dụng khóa API mặc định do OpenWeatherMap cung cấp hoặc tạo một khóa API của riêng bạn. OpenWeatherMap cung cấp hỗ trợ tạo nhiều khóa API nếu cần cho các dự án của bạn.
Bây giờ, bạn đã sẵn sàng để truy xuất dữ liệu thời tiết trực tiếp.
import requests
import json
API_Key = "Your_API_Key"
city_name = input("Enter city name: ")
url = f"http://api.openweathermap.org/data/2.5/weather?q={city_name}&appid={API_Key}"
response = requests.get(url)
res = response.json()
if res["cod"] != "404":
data = res["main"]
live_temperature = data["temp"]
live_pressure = data["pressure"]
desc = res["weather"]
weather_description = desc[0]["description"]
print("Temperature (in Kelvin scale): " + str(live_temperature))
print("Pressure: " + str(live_pressure))
print("Description: " + str(weather_description))
else:
print("Please enter a valid city name")
Nếu bạn cung cấp khóa API hợp lệ và nhập tên thành phố chính xác, bạn sẽ nhận được dữ liệu từ API ở định dạng JSON. Tiếp theo, bạn cần chuyển đổi dữ liệu định dạng JSON này thành một đối tượng Python bằng cách sử dụng json () phương pháp để thực hiện các hoạt động tiếp theo. Nếu thành phố được tìm thấy, bạn sẽ phải giải quyết đối tượng dict (res) để trích xuất thông tin cần thiết.
Phát triển ứng dụng thời tiết bằng dữ liệu thời tiết trực tiếp
Bây giờ bạn đã học cách tìm nạp dữ liệu trực tiếp bằng API OpenWeatherMap, bạn đã sẵn sàng để phát triển một ứng dụng thời tiết đơn giản bằng cách sử dụng nó. Xây dựng một ứng dụng thời tiết có thể giúp bạn áp dụng những gì bạn biết và trau dồi kỹ năng Python của mình.
Bắt tay vào thực hiện các dự án thực tế có thể giúp bạn trở thành một nhà phát triển tốt hơn. Bạn có thể phát triển một số dự án Python khác như hệ thống đăng nhập, ứng dụng câu đố hoặc trình rút gọn URL để củng cố kỹ năng phát triển Python của mình.