Python抓取中国天气网上海市明天天气/温度/风力

由于项目原因,需要简单快速地抓取上海浦东新区未来一天的天气情况,于是参考了博主@双木已成林的这篇文章,进行修改而生成,感谢!


url_address = 'http://www.weather.com.cn/weather/101020600.shtml'

打开url_address,出现的是未来7天上海市浦东新区的天气情况,其中,101020600是代表上海市的编号。


url_address = 'http://www.weather.com.cn/weather/101020600.shtml'
resq = request.Request(url_address)
resq.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")

with request.urlopen(resq) as html:
    data = html.read().decode("utf-8")
soup=BeautifulSoup(data,'html.parser')

soup可以把页面整齐地解析出来,利用print(soup)来查看。

我们需要的一段,第一个显示的是(今天)天气,我们需要的在第二个,显示(明天)天气如下:



接下来,就可以利用标签,来提取相应的信息了。

以下是简单的完整代码:

from urllib import request
from bs4 import BeautifulSoup
import re

url_address = 'http://www.weather.com.cn/weather/101020600.shtml'
resq = request.Request(url_address)
resq.add_header("User-Agent","Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/55.0.2883.87 Safari/537.36")

with request.urlopen(resq) as html:
    data = html.read().decode("utf-8")
soup=BeautifulSoup(data,'html.parser')

tagTomor=soup.find('p',class_="tem").find_next('p',class_="tem")  #第二个包含class="tem"的p标签为明天天气
temperatureHigh=tagTomor.span.string  #最高温度
temperatureLow=tagTomor.i.string  #最低温度
weather=soup.find('p',class_="wea").find_next('p',class_="wea").string #天气
wind=soup.find('p',class_="win").find_next('p',class_="win").i.string #风力

print('最低温度:' + temperatureLow)
print('最高温度:' + temperatureHigh)
print('天气:' + weather)
print('风力:' + wind)

打印出来的结果如下:



参考来源:

https://blog.csdn.net/Seanlinsea/article/details/78391614

再次感谢!

阅读更多
想对作者说点什么?

博主推荐

换一批

没有更多推荐了,返回首页