使用Python去爬取中国天气网的近7天天气情况
程序员文章站
2022-07-14 15:51:02
...
import requests
from bs4 import BeautifulSoup
address = 'http://www.weather.com.cn/weather/101{}.shtml'
for i in range(1,24):
z = ''
if i<5:
z = '0'+str(i)+'0100'
if i>4 and i<10:
z = '0'+str(i)+'0101'
if i>9:
z = str(i)+'0101'
address1 =address.format(z)
#print(address1)
w = requests.get(''+address1+'')
#转换编码解决中文问题
t1 = w.text.encode('ISO-8859-1').decode('utf-8')
ht1 = BeautifulSoup(t1,'html5lib')
body1 = ht1.body # 获取body部分
# print(body1)
data = body1.find('div', {'id': '7d'}) # 找到id为7d的div
ul = data.find('ul') # 获取ul部分
li = ul.find_all('li') # 获取所有的li
s = body1.find('div',{'class':'crumbs'}) #找到class为crumbs的div
a = s.find_all('a') # 获取a标签
#print(s)
if len(a) == 1:
print(a[0].text)
else:
print(a[0].text,'-',a[1].text,end='\n')
#print(li)
list = []
for day in li: # 对每个li标签中的内容进行遍历
# temp代存每日的数据
temp = []
# 添加日期
data = day.find('h1').string # 找到日期
temp.append(data) # 添加到temp中
inf = day.find_all('p') # 找到li中的所有p标签
# 添加天气状况
temp.append(inf[0].string) # 第一个p标签中的内容(天气状况)加到temp中
# 添加温度
tem = day.find('i').string # 找到温度
temp.append(tem) # 添加到temp中
inf = day.find_all('i') # 找到li中的所有p标签
list.append(temp) # 将temp 加到list中
for j in range(len(list)):
print(list[j],end='\n')
输出结果:
上一篇: 爬虫项目实战八:爬取天气情况
推荐阅读