用Python爬虫做一个“天气预报”软件(exe可执行)
时间: 2024-01-25 14:02:22 浏览: 24
好的,我可以帮你解答这个问题。
首先,你需要爬取天气预报的数据。你可以选择使用第三方的天气API,也可以直接爬取天气网站的数据。这里以爬取中国天气网(http://www.weather.com.cn/)的数据为例。
1. 安装依赖库
你需要安装 requests 和 beautifulsoup4 两个库来实现爬虫功能。如果你还没有安装,可以使用 pip install requests 和 pip install beautifulsoup4 命令进行安装。
2. 分析网页结构
在爬取网页数据之前,需要先分析网页的结构。通过查看源代码或使用开发者工具,我们可以找到需要爬取的数据所在的 HTML 标签和 CSS 类名。
例如,如果我们想要获取北京的天气预报,可以访问这个链接:http://www.weather.com.cn/weather/101010100.shtml。在这个页面中,北京的天气信息被包含在一个 id 为“7d”的 div 标签中。我们可以使用 BeautifulSoup 库来解析 HTML 页面,找到这个 div 标签,然后获取其中的数据。
3. 编写代码
接下来,我们来编写代码实现天气预报功能。你可以将代码保存为一个.py 文件,然后使用 PyInstaller 等工具将其打包成可执行文件。
```python
import requests
from bs4 import BeautifulSoup
def get_weather(city_code):
url = 'http://www.weather.com.cn/weather/{}.shtml'.format(city_code)
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.36'}
response = requests.get(url, headers=headers)
soup = BeautifulSoup(response.content, 'html.parser')
weather_div = soup.find(id='7d')
if weather_div:
ul = weather_div.find('ul')
li_list = ul.find_all('li')
print('城市:', li_list[0].text)
print('天气:', li_list[1].text)
print('温度:', li_list[2].text)
print('风力:', li_list[3].text)
print('空气质量:', li_list[7].text)
if __name__ == '__main__':
city_code = '101010100' # 北京的城市代码
get_weather(city_code)
```
在这个代码中,我们定义了一个 get_weather 函数,它接受一个城市代码作为参数。函数中,我们首先构造了天气预报网页的链接,然后发送 HTTP 请求,获取网页的 HTML 内容。接着,我们使用 BeautifulSoup 库解析 HTML 页面,找到 id 为“7d”的 div 标签,然后获取其中的 ul 和 li 标签中的数据。最后,我们打印出城市、天气、温度、风力和空气质量等信息。
你可以根据自己的需要对代码进行修改和优化,以实现更加完善的天气预报功能。
阅读全文