用python编程语言爬取http://www.tianqi.com网站的广州、上海、北京、哈尔滨四个城市的30天天气信息,并分别将爬取信息存储到guanzhou.csv、shanghai.csv、beijin.csv、haerbin.csv文件
时间: 2024-01-30 16:03:27 浏览: 158
好的,我知道了。这是一个爬虫的问题,需要用到 Python 的 requests 和 BeautifulSoup 库。以下是代码实现:
```python
import requests
from bs4 import BeautifulSoup
import csv
# 定义城市和对应的url
cities = {
'guangzhou': 'http://www.tianqi.com/guangzhou/30/',
'shanghai': 'http://www.tianqi.com/shanghai/30/',
'beijing': 'http://www.tianqi.com/beijing/30/',
'haerbin': 'http://www.tianqi.com/haerbin/30/'
}
# 定义爬取函数
def get_weather(city):
# 获取网页内容
url = cities[city]
response = requests.get(url)
html = response.content.decode('utf-8')
# 解析网页内容
soup = BeautifulSoup(html, 'html.parser')
table = soup.find('table', class_='b')
trs = table.find_all('tr')[1:]
# 存储到csv文件
filename = f'{city}.csv'
with open(filename, 'w', newline='') as f:
writer = csv.writer(f)
writer.writerow(['日期', '天气', '最高温度', '最低温度'])
for tr in trs:
tds = tr.find_all('td')
date = tds[0].text.strip()
weather = tds[1].text.strip()
high = tds[2].text.strip()
low = tds[3].text.strip()
writer.writerow([date, weather, high, low])
# 调用函数爬取数据
for city in cities.keys():
get_weather(city)
print(f'{city}数据爬取完成!')
```
这个程序会爬取四个城市的天气信息,并将数据存储到对应的 csv 文件中。你可以将代码保存为一个 .py 文件,然后在命令行中运行,也可以在 Jupyter Notebook 中直接运行。需要注意的是,爬取网站的速度过快可能会被网站屏蔽,所以最好设置一些延时或者使用代理。
阅读全文