目标网站:http://www.weather.com.cn/textFC/hb.shtml
我重点分析解析网页这个部分,请求网页这个模块就跳过吧。
打开浏览器的检查,找到我们想要的数据所存放的节点。
可以发现,这张网页的所有省份里面的城市信息是存放在(div class =‘conMidtab’)这个节点里面
可以用BeautiSoup来定位到这个节点假设我们已经获取了网页的文本信息并存放在html这个变量里面。
#解析网页我之所以用html5lib主要是因为在港澳台的天气网页中,网页代码不规范没有table的闭合标签
#html5lib的容错能力是最强的
soup = BeautifulSoup(html,'html5lib')
#直接定位到所有省份天气的节点。
conMidtab = soup.find('div',class='conMidtab')
继续检查找到一个省份的数据信息存放的节点,发现信息的存放在table这个标签里面
因为div class=conMidtab这个节点里面存放了所有省份的天气信息,现在我们要定位在一个省份的信息
tables = conMidtab.find_all('table')
继续检查,找到一个city的信息。
city信息是放在table下面的tr标签中,但是前面两个tr标签并没有存放信息,所以在进行遍历的时候我们要把前面两个tr用切片去掉。
for table in tables:
trs = table.find_all('tr')[2:]
然后我们来分析table下面的第三个tr,城市天气信息是放在每一个td中的。但是tr下面的第一个td存放的是一个省份名称。我们用河北省来分析,因为北京市和北京城市是同名的