📜  如何在Python中从 Google 中提取天气数据?(1)

📅  最后修改于: 2023-12-03 14:52:48.647000             🧑  作者: Mango

如何在Python中从 Google 中提取天气数据?

在Python中,我们可以使用第三方库BeautifulSoup来解析HTML,从而从Google中提取天气数据。

步骤一:安装第三方库

在终端或命令行界面中输入以下命令安装BeautifulSoup库:

pip install beautifulsoup4
步骤二:获取Google天气页面

通过Python的requests库,我们可以获取Google天气页面的HTML代码:

import requests

url = 'https://www.google.com/search?q=weather'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
response = requests.get(url, headers=headers)

html = response.content.decode('utf-8')

这里,我们先定义了一个URL,即Google天气的查询URL。然后设置了一个怕头,模拟浏览器访问。接着使用requests库发送了一个GET请求,并获取到了响应的HTML代码。最后将其解码为utf-8编码的字符串。

步骤三:解析HTML代码

使用BeautifulSoup库解析HTML代码,并提取相关信息:

from bs4 import BeautifulSoup

soup = BeautifulSoup(html, 'html.parser')
weather = soup.find('div', attrs={'class': 'BNeawe iBp4i AP7Wnd'}).get_text()
loc = soup.find('div', attrs={'class': 'BNeawe s3v9rd AP7Wnd'}).get_text()
time = soup.find('div', attrs={'class': 'BNeawe s3v9rd AP7Wnd'}).find_next_sibling().get_text()

print(loc)
print(time)
print(weather)

这里,我们使用find方法从HTML代码中提取相关信息。其中,天气信息位于class为“BNeawe iBp4i AP7Wnd”的div标签内,地理位置位于class为“BNeawe s3v9rd AP7Wnd”的div标签内,时间信息则是该标签的下一个标签。最后,我们将提取到的信息打印出来。

完整代码
import requests
from bs4 import BeautifulSoup

url = 'https://www.google.com/search?q=weather'
headers = {'User-Agent': 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_15_0) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/78.0.3904.97 Safari/537.36'}
response = requests.get(url, headers=headers)

html = response.content.decode('utf-8')

soup = BeautifulSoup(html, 'html.parser')
weather = soup.find('div', attrs={'class': 'BNeawe iBp4i AP7Wnd'}).get_text()
loc = soup.find('div', attrs={'class': 'BNeawe s3v9rd AP7Wnd'}).get_text()
time = soup.find('div', attrs={'class': 'BNeawe s3v9rd AP7Wnd'}).find_next_sibling().get_text()

print(loc)
print(time)
print(weather)

输出结果为:

New York, NY
Friday 2:00 PM
Mostly sunny

至此,我们已经学会了如何在Python中从Google中提取天气数据。