解析环境加拿大网站

Parsing Environment Canada Website

我正在尝试从“https://weather.gc.ca/city/pages/ab-52_metric_e.html”中抓取天气预报。使用下面的代码,我可以获得包含数据的 table 但我被卡住了。白天,第二行包含今天的预报,第三行包含今晚的预报。在一天结束时,第二行变成今晚的预报,而今天的预报被删除。我想要做的是通过 table 进行解析,以获取今天、今晚和接下来每一天的预报,即使今天的预报缺失;像这样:

今天:晴天多云。今天下午有 60% 的几率有阵雨,并有雷暴的风险。浓烟弥漫。高 26。紫外线指数 6 或高。 今晚:多云。今夜转晴。清晨前云量增加。浓烟弥漫。低 13。 周五:多云。浓烟弥漫。下午风力变为西南 30 km/h 阵风到 50。高 24.

#using Beautiful Soup 3, Python 2.6
from BeautifulSoup import BeautifulSoup
import urllib

pageFile = urllib.urlopen("https://weather.gc.ca/city/pages/ab-    52_metric_e.html")
pageHtml = pageFile.read()
pageFile.close()

soup = BeautifulSoup("".join(pageHtml))
data = soup.find("div", {"id": "mainContent"})

forecast = data.find('table',{'class':"table mrgn-bttm-md mrgn-tp-md     textforecast hidden-xs"})

您可以执行一些操作,例如遍历 table 中的每一行并获取行的值。一个例子是:

forecast = data.find('table',{'class':"table mrgn-bttm-md mrgn-tp-md     textforecast hidden-xs"}).find_all("tr")
for tr in forecast[1:]:
    print " ".join(tr.text.split())

通过这种方法,您可以获得每一行的内容(不包括第一行,即一些 header。